在 Pandas 中执行布尔索引时,了解逻辑运算符 &(按位与)和 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中文网其他相关文章!