首页 > 解决方案 > 如果值存在,则数据框过滤器,否则返回所有

问题描述

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

提前致谢。

标签: python-3.xpandasdataframe

解决方案


如果至少有一个by ,则可以将标量布尔 by |for bitwise ORwith statement for test 链接起来:if-elseTrueSeries.any

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

推荐阅读