我正在尝试在多个列上过滤具有相同条件的数据框。
这可以通过执行以下操作来实现:
>>> 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)]
除了上面的代码显然不起作用。
最佳答案
看起来可以通过以下方式实现:
>>> 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 发布自己的答案时进行了编辑,但我还是决定发布它,因为它提供了稍微不同的语法)
关于python - 以编程方式在多列上使用单个条件过滤 Pandas 数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55697696/