提问人:Keith 提问时间:7/16/2014 最后编辑:cottontailKeith 更新时间:2/15/2023 访问量:138510
Pandas 中的元素逻辑 OR
Element-wise logical OR in Pandas
答:
155赞
deinonychusaur
7/16/2014
#1
对应的运算符是:|
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 逻辑运算的更多信息,请参见此处。
评论
43赞
Gerard
8/8/2016
圆括号很重要
0赞
Alan
3/15/2020
只是一个评论:在这里不起作用。只有工作。or
|
12赞
Jonathan Stray
5/13/2017
#2
取两个系列的元素逻辑 OR 并做a
b
a | b
1赞
cottontail
2/15/2023
#3
如果对单个数据帧的列进行操作,并且是按元素工作的选项。您也无需担心括号,因为比较运算符的优先级高于布尔/按位运算符。例如,以下调用返回列 A 值为 >1 且列 B 值> 2 的行。eval
query
or
query
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
评论