ホームページ >バックエンド開発 >Python チュートリアル >Pandas のブール型インデックス作成: なぜ「and」の代わりに「&」を使用するのでしょうか?
Pandas でブール インデックス作成を実行する場合、論理演算子 & (ビット単位の AND) と (論理 AND).
次の例を考えてみましょう:
a = pd.DataFrame({'x': [1, 1], 'y': [10, 20]}) a[(a['x'] == 1) & (a['y'] == 10)]
このコードは期待どおりの結果を返します:
x y 0 1 10
ただし、& の代わりに and を使用すると、エラーが発生します:
a[(a['x'] == 1) and (a['y'] == 10)]
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
このエラーは、各シリーズ (a['x'] および a['y']) の真実性を個別に評価しようとするために発生します。ただし、これらの系列には明確なブール値がないため、曖昧な真理値エラーが発生します。
対照的に、ビット単位の & 演算子は要素単位の論理演算を実行します。これは、各要素が a['x'] と a['y'] の対応する要素間の演算の結果を表すブール配列を返します。これにより、インデックス作成用のブール マスクを作成できます。
& を使用する場合は括弧を使用することが必須であることに注意してください。これらがないと、& over == の演算子の優先順位が高いため、操作は正しく評価されません。
a['x'] == 1 & a['y'] == 10 # Incorrect: Triggers the error (a['x'] == 1) & (a['y'] == 10) # Correct: Boolean indexing works as expected
Pandas でブール型インデックス付けを実行するときは、常に & 演算子を使用してください。要素ごとの論理演算。これにより、適切な評価が保証され、曖昧な真理値エラーが回避されます。
以上がPandas のブール型インデックス作成: なぜ「and」の代わりに「&」を使用するのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。