python - 以编程方式在多列上使用单个条件过滤 Pandas 数据框

标签 python python-3.x pandas

我正在尝试在多个列上过滤具有相同条件的数据框。

这可以通过执行以下操作来实现:

>>> 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/

相关文章:

python - Pandas msgpack vs 泡菜

python - 环境变量 PYSPARK_PYTHON 和 PYSPARK_DRIVER_PYTHON

python - 2 个数据框之间的一对一列值比较 - pandas

python-3.x - 如何根据列表访问 DataFrame 中的某些列?

python - 数据帧交替数组

python - 如何在 Python Paramiko 中通过 HTTP 代理 ssh?

python - 如何在 django CBV(ListView) 中发送 2 个查询集

python - 如何对 Python 字符串中的特殊字符进行转义?

python - Django 2 命名空间和 app_name

python - 防止对 pandas 中的列名进行排序 - python