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

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

Linda Hamilton
发布: 2024-12-17 21:20:19
原创
116 人浏览过

Pandas Boolean Indexing: Why Use `&` Instead of `and`?

Pandas 中布尔索引的逻辑运算符

在 Pandas 中执行布尔索引时,了解逻辑运算符 &(按位与)和 and ( 之间的区别至关重要逻辑 AND)。

为什么使用 & 代替 and 作为布尔值索引?

考虑以下示例:

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

a[(a['x'] == 1) & (a['y'] == 10)]
登录后复制

此代码返回预期结果:

    x   y
0   1  10
登录后复制

但是,如果您使用 and 而不是 &,则您'会遇到错误:

a[(a['x'] == 1) and (a['y'] == 10)]
登录后复制
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
登录后复制

理解错误

发生错误是因为 并尝试单独评估每个系列的真实性(a['x'] 和 a['y'])。然而,这些Series没有明确的布尔值,从而导致真值不明确的错误。

相反,按位&运算符执行逐元素逻辑运算。它返回一个布尔数组,其中每个元素表示 a['x'] 和 a['y'] 中相应元素之间的运算结果。这允许您创建用于索引的布尔掩码。

括号:强制要求

请注意,使用 & 时必须使用括号。如果没有它们,由于 & 的运算符优先级高于 ==,操作将被错误地评估。

a['x'] == 1 & a['y'] == 10  # Incorrect: Triggers the error

(a['x'] == 1) & (a['y'] == 10)  # Correct: Boolean indexing works as expected
登录后复制

结论

在 Pandas 中执行布尔索引时,始终使用 & 运算符逐元素逻辑运算。这确保了正确的评估并避免了模糊的真值错误。

以上是Pandas 布尔索引:为什么使用 `&` 而不是 `and`?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板