我有一个示例数据框,我想基于相同的值过滤几列,但我想避免重复行来做到这一点,例如:
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])
但是出现以下错误:
无法使用多维键索引
有人知道是否可以制作这种类型的过滤器?
谢谢!
答案 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