複数の条件でデータフレームにインデックスを付けると、パンダの AND (&) 演算子と OR (|) 演算子が逆に見えるのはなぜですか?

Linda Hamilton
リリース: 2024-10-25 16:30:09
オリジナル
636 人が閲覧しました

Why Does Pandas' AND (&) and OR (|) Operators Seem Reversed When Indexing a DataFrame with Multiple Conditions?

pandas: データ フレームのインデックス作成中に複数の条件で予期しない動作が発生する

DataFrame 内の行を複数の列の値でフィルター処理する場合、次のことが重要です。 AND (&) および OR (|) 演算子の動作を理解します。

最近の観察では、これらの演算子の動作が逆になっているように見えることがわかりました。 OR 演算子は AND 演算子のように動作するようであり、その逆も同様です。

説明のために、次のデータフレームを考えてみましょう:

<code class="python">df = pd.DataFrame({'a': range(5), 'b': range(5) })

# Insert -1 values
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>
ログイン後にコピー

結果は次のようになります:

<code class="python">      Original df      Using AND (&)      Using OR (|)    
             a  b              a   b             a   b
0            0  0              0   0             0   0
1           -1 -1            NaN NaN           NaN NaN
2            2  2              2   2             2   2
3           -1  3            NaN NaN            -1   3
4            4 -1            NaN NaN             4  -1

[5 rows x 6 columns]</code>
ログイン後にコピー

出力に見られるように、AND 演算子は少なくとも 1 つの値が -1 である行を削除しますが、OR 演算子は両方の値が -1 ではない行を保持します。

この動作は直観に反しているように見えるかもしれませんが、ドロップではなく、保持したい行の条件を指定していることを思い出してください。

  • df1 の場合、行を保持することを指定しています。 両方 df.a と df.b は -1 ではありません。
  • df2 では、df.a または いずれかの行を保持することを指定しています。 df.b は -1 ではありません。

したがって、観察された動作は正しいです。

以上が複数の条件でデータフレームにインデックスを付けると、パンダの AND (&) 演算子と OR (|) 演算子が逆に見えるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!