pandas:索引資料幀時多個條件下的意外行為
當按多列中的值過濾DataFrame 中的行時,必須了解AND (&) 和OR (|) 運算子的行為。
在最近的觀察中,人們注意到這些運算符的行為似乎相反。 OR 運算符的行為類似 AND 運算符,反之亦然。
為了說明這一點,請考慮以下DataFrame:
<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 的行,而OR 運算子會保留兩個值都不是-1 的行。
這種行為可能看起來違反直覺,但它使如果我們還記得我們正在為要保留而不是刪除的行指定條件,那就有意義了。
因此,觀察到的行為是正確的。
以上是為什麼 Pandas 的 AND (&) 和 OR (|) 運算子在使用多個條件索引 DataFrame 時看起來顛倒了?的詳細內容。更多資訊請關注PHP中文網其他相關文章!