数据框过滤器(如果值存在),否则返回全部

时间:2019-05-16 07:42:42

标签: python-3.x pandas dataframe

如果值匹配,我想过滤一个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

谢谢。

1 个答案:

答案 0 :(得分:1)

您可以将|的标量布尔值与OR语句按位if-else进行链式连接,以测试是否至少有一个Series.anyTrue

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