我知道AND对应于
&
,而NOT对应于~
。什么是逐元素逻辑 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
import pandas as pd
# Example with Series
s1 = pd.Series([True, False, True])
s2 = pd.Series([False, True, True])
result = s1 | s2
print(result)
输出:
0 True
1 True
2 True
dtype: bool
# DataFrames 示例
import pandas as pd
df1 = pd.DataFrame({'A': [True, False, True], 'B': [False, True, False]})
df2 = pd.DataFrame({'A': [False, True, True], 'B': [True, False, True]})
result = df1 | df2
print(result)
输出:
A B
0 True True
1 True True
2 True True
|运算符或 or 关键字用于在 Series 或 DataFrame 中的相应元素之间执行逐元素逻辑或。生成的 Series 或 DataFrame 将具有 True,其中输入 Series 或 DataFrame 中至少有一个相应元素为 True。