首页 >后端开发 >Python教程 >Pandas 布尔索引:为什么使用'&”而不是'and”?

Pandas 布尔索引:为什么使用'&”而不是'and”?

Linda Hamilton
Linda Hamilton原创
2024-12-13 03:45:10141浏览

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn