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:
为了避免这种歧义,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中文网其他相关文章!