【发布时间】:2017-01-16 06:27:33
【问题描述】:
我正在尝试使用布尔掩码从 2 个不同的数据帧中获取匹配项。 你
使用逻辑或运算符:
x = df[(df['A'].isin(df2['B']))
or df['A'].isin(df2['C'])]
Output:
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
但是使用按位或运算符,结果会成功返回。
x = df[(df['A'].isin(df2['B']))
| df['A'].isin(df2['C'])]
Output: x
两者有区别吗?按位 OR 是这里的最佳选择吗?为什么逻辑 OR 不起作用?
【问题讨论】:
-
是的,基本上是因为逻辑上还是不能重载。
-
您好编辑了我的问题。我真的很好奇为什么逻辑 OR 不起作用。
-
您在比较数组,而不是
or无法理解的标量值,因此需要按位使用|。 -
谢谢。我可能应该阅读更多关于基本功能的内容。
-
但最好用
and解释here,但同样适用于or。
标签: python pandas bitwise-operators logical-operators