如果值匹配,我想过滤一个DataFrame,否则返回每一行。当我尝试在代码中使用.isin进行过滤时,它返回空的DataFrame。
My DataFrame:df
a_column b_column
1 3
2 4
3 5
4 9
如果我尝试使用类似的代码进行过滤,
df=df[df['b_column'].isin([7])]
df=df[df['b_column']==([7])]
它返回空的DataFrame, 如果我用7过滤b_column,我想要的输出是
My DataFrame:df
a_column b_column
1 3
2 4
3 5
4 9
谢谢。
答案 0 :(得分:1)
您可以将|
的标量布尔值与OR
语句按位if-else
进行链式连接,以测试是否至少有一个Series.any
的True
:
m = df['b_column'].isin([7])
b = False if m.any() else True
df1 = df[m | b]
print (df1)
a_column b_column
0 1 3
1 2 4
2 3 5
3 4 9
m = df['b_column'].isin([3,4])
b = False if m.any() else True
df1 = df[m | b]
print (df1)
a_column b_column
0 1 3
1 2 4