Pandas の複数条件のインデックス作成: 予期しない動作
pandas では、DataFrame へのフィルターの適用は一般的な操作です。ただし、複数の条件、特に AND や OR などの論理演算子を使用すると、予期しない結果が発生する可能性があります。
問題:
2 つの列の値に基づいて行をフィルタリングする場合、AND 演算子は OR のように動作するように見え、その逆も同様です。たとえば、以下のコードは次のようにする必要があります。
<code class="python">df = pd.DataFrame({'a': range(5), 'b': range(5) }) df['a'][1] = -1 df['b'][1] = -1 df['a'][3] = -1 df['b'][4] = -1 df1 = df[(df.a != -1) & (df.b != -1)] df2 = df[(df.a != -1) | (df.b != -1)] print(pd.concat([df, df1, df2], axis=1, keys=['original df', 'using AND (&)', 'using OR (|)',]))</code>
説明:
予期しない動作は、パンダのインデックス作成のコンテキストで論理演算子がどのように解釈されるかに起因します。
AND 演算子:
OR 演算子:
したがって、AND 演算子は、いずれかの列に -1 がないことに基づいて行を除外するため、OR と同様に動作します。逆に、OR 演算子は、両方の列に -1 が含まれていない場合にのみ行を含めるため、AND のように動作します。
補足:
以上が複数の条件を使用したパンダのインデックス作成で予期しない動作が発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。