我知道AND对应于&
,NOT对应于~
。那么逐元素的逻辑OR运算符是什么?我知道“or”本身不是我要找的。
&
,NOT对应于~
。那么逐元素的逻辑OR运算符是什么?我知道“or”本身不是我要找的。我知道AND对应于&
,NOT对应于~
。那么逐元素的逻辑OR运算符是什么?我知道“or”本身不是我要找的。
&
,NOT对应于~
。那么逐元素的逻辑OR运算符是什么?我知道“or”本身不是我要找的。对应的运算符是|
:
df[(df < 3) | (df == 5)]
如果您需要对每个元素检查其是否小于3或等于5,则可以使用 np.logical_or
函数。 对于两个条件,您可以使用
df[np.logical_or(df<3, df==5)]
或者,对于多个条件,请使用 logical_or.reduce
。
df[np.logical_or.reduce([df<3, df==5])]
由于条件被指定为单独的参数,所以不需要使用括号分组。
有关在pandas中进行逻辑操作的更多信息可以在此处找到。
要对两个系列 a
和 b
进行逐元素的逻辑或运算,只需执行以下操作:
a | b
eval
和 query
是选项,其中 or
逐个元素地工作。您不需要担心括号,因为比较运算符的优先级高于布尔/位运算符。例如,以下 query
调用返回列 A 值大于 1 并且列 B 值大于 2 的行。df = pd.DataFrame({'A': [1,2,0], 'B': [0,1,2]})
df.query('A > 1 or B > 2') # == df[(df['A']>1) | (df['B']>2)]
# A B
# 1 2 1
或者使用 eval
可以返回一个布尔序列(同样地,or
作为逐元素运算符也可以正常工作)。
df.eval('A > 1 or B > 2')
# 0 False
# 1 True
# 2 False
# dtype: bool
|
和np.logical_or
在存在 NaN 的情况下表现不同。详情请参见 https://dev59.com/0loU5IYBdhLWcg3wxI2A - Frankor
在这里不起作用,只有|
起作用。 - Alan