首页 > 后端开发 > 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
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板