You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在不指定列的情况下筛选Pandas中任意列满足条件的行?

问题描述

我使用Pandas 1.5.2版本创建了如下DataFrame:

import pandas as pd
print(pd.__version__) # 1.5.2

x = [1, 2, 3]
y = [4, 5, 6]
z = [7, 8, 9]

df = pd.DataFrame({
  "a": x,
  "b": y,
  "c": z
})

我知道可以针对指定列设置条件筛选该行满足条件的所有行,例如:

df.loc[df.a > 1]
# 或者
df.loc[df["a"] > 1]

这段代码的输出是:

abc
258
369

我想要筛选DataFrame中任意一列满足给定条件的所有行,期望写法类似:

df.loc["*" > 1]

预期输出为:

abc
147
258
369

我尝试了df[df > 1],但它会将不匹配条件的值设为NaN,输出结果如下:

abc
NaN47
258
369
解决方案

要实现“任意一列满足条件则保留整行”的筛选,可使用any()方法,它会检查每行中是否至少有一个元素满足条件,返回布尔值序列后再用这个序列筛选行:

df.loc[(df > 1).any(axis=1)]

代码说明

  • df > 1:生成与原DataFrame形状一致的布尔DataFrame,每个元素标记对应位置是否大于1
  • .any(axis=1):按行(axis=1)校验是否存在至少一个True,返回布尔Series,True代表该行至少有一列满足条件
  • df.loc[...]:通过布尔Series筛选出符合要求的行

执行后即可得到预期输出:

abc
147
258
369

补充提示

如果需要所有列都满足条件才保留行,只需将any()替换为all():

df.loc[(df > 1).all(axis=1)]

在本例中,这会只保留后两行(所有列值均大于1的行)。


内容的提问来源于stack exchange,提问作者Luc vd Enden

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 02:57:59