在資料分析中,pandas 是操作和處理資料幀的重要庫。在執行篩選操作時,了解使用多個條件時運算子的行為至關重要。
讓我們考慮一個場景,我們想要根據兩列「a」和「a」中的值來過濾資料框中的行。 b'。使用 AND '&' 運算子和 OR '|'運算符,我們期望 AND 刪除至少一個值等於 -1 的行,而 OR 應保留兩個值均為 -1 的行。
<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 運算子刪除至少有一個值的每一行是 -1,而 OR 運算子要求兩個值都為 -1 才能刪除它們。
理解這種行為的關鍵在於記住我們正在根據我們想要保留的內容編寫條件,不是我們想要刪除的。
使用 df.loc 和 df.iloc 等鍊式存取而不是 df['a'][1] = -1 來避免潛在問題至關重要。
以上是為什麼在 Pandas 過濾操作中使用 AND (`&`) 和 OR (`|`) 運算子會產生意外的結果?的詳細內容。更多資訊請關注PHP中文網其他相關文章!