pandas 数据帧 and/or 条件语法

pandas dataframe and/or condition syntax

这个 pandas 数据框条件完美工作

    df2 = df1[(df1.A >= 1) | (df1.C >= 1) ]

但是如果我想根据 2 个条件过滤掉行

(1) A>=1 & B=10 

(2) C >=1


        df2 = df1[(df1.A >= 1 & df1.B=10) | (df1.C >= 1) ]

给我一个错误信息

[ERROR] Cannot perform 'rand_' with a dtyped [object] array and scalar of type [bool]

有人可以帮忙吗?谢谢!

缺少一组括号。也分别在 A 和 B 周围加上括号

试试这个

df2 = df1[((df1.A >= 1) & (df1.B==10)) | (df1.C >= 1) ]

例子

df1 = pd.DataFrame({'A': [0,0,1,1,2,2], 'B': [0,10,0,10,0,10], 'C': [2,2,3,3,0,0]})
df1

A   B   C
0   0   0   2
1   0   10  2
2   1   0   3
3   1   10  3
4   2   0   0
5   2   10  0


df2 = df1[((df1.A >= 1) & (df1.B==10)) | (df1.C >= 1) ]
df2

    A   B   C
0   0   0   2
1   0   10  2
2   1   0   3
3   1   10  3
5   2   10  0

有时,将每个条件括起来会有帮助。所以,而不是

df2 = df1[(df1.A >= 1 & df1.B=10) | (df1.C >= 1) ]

你会做

df2 = df1[((df1.A >= 1) & (df1.B=10)) | (df1.C >= 1) ]