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

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

Linda Hamilton
Linda Hamilton原创
2024-12-17 21:20:19113浏览

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

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