我正在尝试在多列上过滤具有相同条件的数据框。
可以通过以下操作来实现:
>>> df = pd.DataFrame({
"A1": [1, 2, 5, 1, 2],
"B1": [0, 2, 0, 4, 1],
"A2": [2, 3, 5, 1, 5],
"B2": [4, 1, 6, 2, 1]
})
>>> df_filtered = df[(df['A1'] > 3) | (df['A2'] > 3)]
>>> df_filtered
A1 B1 A2 B2
2 5 0 5 6
4 2 1 5 1
但是,我希望能够通过预定义变量以编程方式修复列,而不是像本示例中那样手动修复列:
cols = ['A1', 'A2']
df_filtered = df[df[cols].any(> 3)]
除了上面的代码显然不起作用。
答案 0 :(得分:1)
然后我们使它起作用:-)
cols = ['A1', 'A2']
df[df[cols].gt(3).any(axis = 1)]
Out[556]:
A1 B1 A2 B2
2 5 0 5 6
4 2 1 5 1
答案 1 :(得分:1)
看起来可以这样做:
>>> df_filtered = df[(df[cols] > 3).any(axis=1)]
>>> df_filtered
A1 B1 A2 B2
2 5 0 5 6
4 2 1 5 1
(此答案在Wen-Ben发布自己的答案时被删除,但我还是决定将其发布,因为它提供了稍微不同的语法)