首頁 > 後端開發 > Python教學 > Pandas 布林索引:為什麼使用「&」而不是「and」?

Pandas 布林索引:為什麼使用「&」而不是「and」?

Linda Hamilton
發布: 2024-12-13 03:45:10
原創
138 人瀏覽過

Pandas Boolean Indexing: Why Use

Pandas 中布林索引的邏輯運算子

在Pandas 中使用布林索引時,了解邏輯運算子之間的差異非常重要" &“ 和“和”。

問題:為什麼以下語句可以正常運作:

a[(a['some_column']==some_number) & (a['some_other_column']==some_other_number)]
登入後複製

但以下語句會出現錯誤:

a[(a['some_column']==some_number) and (a['some_other_column']==some_other_number)]
登入後複製

答案:

「和」 Python中的運算子將其操作數隱式轉換為布林值。然而,在處理 NumPy 數組(以及基於 NumPy 數組的 Pandas Series)時,這種轉換可能會導致歧義。

在評估包含多個元素的陣列的真值時,不清楚是否應該這樣做如果滿足以下條件,則被視為True:

    其所有元素均為True
  • 其任何元素是True
  • 它具有非零長度
為了避免這種歧義,NumPy 和Pandas 需要使用「any()」、「all()」進行明確布林計算,或“empty()”方法。

在布林索引的情況下,我們不需要布林求值,而是需要逐元素邏輯運算。這就是“&”運算符發揮作用的地方。

「&」運算子執行逐元素邏輯 AND 運算。它傳回一個布林數組,其中每個元素都是輸入數組中對應元素的邏輯 AND 的結果。

範例:

import pandas as pd

a = pd.DataFrame({'x':[1,1],'y':[10,20]})

print(a[(a['x']==1) & (a['y']==10)])
登入後複製
輸出:

   x   y
0  1  10
登入後複製
在此範例中,「&」運算子用於尋找「x」列和“y”列滿足指定條件。

以上是Pandas 布林索引:為什麼使用「&」而不是「and」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板