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) ]
这个 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) ]