Pandas でのブール インデックス作成の論理演算子
Pandas でブール インデックス作成を使用する場合は、論理演算子の違いを理解することが重要です。 &" そして"and".
質問: 次のステートメントはエラーなしで機能するのはなぜですか:
a[(a['some_column']==some_number) & (a['some_other_column']==some_other_number)]
しかし、次のステートメントはエラーで終了します:
a[(a['some_column']==some_number) and (a['some_other_column']==some_other_number)]
答え:
「and」演算子Python では、オペランドを暗黙的にブール値に変換します。ただし、NumPy 配列 (および NumPy 配列に基づく Pandas シリーズ) を扱う場合、この変換はあいまいさを引き起こす可能性があります。
複数の要素を含む配列の真の値を評価する場合、評価すべきかどうかは不明です。次の場合に True とみなされます:
この曖昧さを避けるために、NumPy と Pandas では、「any()」、「all()」、「all()」を使用した明示的なブール評価が必要です。
ブール値のインデックス作成の場合、ブール値の評価は必要ありません。要素ごとの論理演算。ここで、「&」演算子が登場します。
「&」演算子は、要素ごとの論理 AND 演算を実行します。各要素が入力配列内の対応する要素の論理積の結果であるブール配列を返します。
例:
import pandas as pd a = pd.DataFrame({'x':[1,1],'y':[10,20]}) print(a[(a['x']==1) & (a['y']==10)])
出力:
x y 0 1 10
この例では、「&」演算子を使用して、「x」列と「x」列の両方が含まれる行を検索します。 「y」列は指定された基準を満たしています。
以上がPandas Boolean インデックス作成: なぜ「and」の代わりに「&」を使用するのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。