按相同值过滤列

时间:2019-09-23 10:22:51

标签: python pandas

我有一个示例数据框,我想基于相同的值过滤几列,但我想避免重复行来做到这一点,例如:

df = df.loc[df['a'] == 7]
df = df.loc[df['b'] == 7]

我正在寻找一种更干净的方式编写此内容,因为我将有许多列使用相同的处理方法。这是我的尝试:

df = pd.DataFrame(np.array([[1, 2, 3], [4, 5, 6], [7, 7, 9]]), columns=['a', 'b', 'c']) 
my_cols = ['a','b']
print(df.loc[df[my_cols]==7])

但是出现以下错误:

  

无法使用多维键索引

有人知道是否可以制作这种类型的过滤器?

谢谢!

1 个答案:

答案 0 :(得分:2)

因为df[my_cols]==7返回布尔值DataFrame是必要的,所以添加DataFrame.any

print(df[(df[my_cols]==7).any(axis=1)])
   a  b  c
2  7  7  9

print (df[my_cols]==7)
       a      b
0  False  False
1  False  False
2   True   True