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

Pandas如何筛选任意分数列满足>=85条件的DataFrame行

Pandas 动态筛选任意分数列达阈值的行

实现思路

不需要逐个列编写判断条件,核心逻辑分两步:

  1. 动态匹配所有分数列:自动识别所有命名符合Score前缀规则的列,适配列数增减的场景
  2. 用pandas原生向量化方法做行级判断:逐行检查是否存在任意分数列满足阈值要求,避免逐行循环的性能损耗

完整代码示例

首先构造测试数据集:

import pandas as pd

# 初始化示例DataFrame
df = pd.DataFrame({
    'Name': ['Leo', 'Ann', 'Joanne', 'Joaquin'],
    'Score1': [89, 20, 10, 20],
    'Score2': [12, 85, 20, 30],
    'Score3': [32, 10, 50, 40]
})

执行筛选逻辑:

# 自动提取所有分数列(支持任意数量的Score列,无需手动枚举)
# 模糊匹配列名包含Score的列,若需更严谨的匹配可改用正则:df.filter(regex=r'^Score\d+$').columns
score_columns = df.filter(like='Score').columns

# 筛选:任意分数列值>=85则保留该行
result = df[df[score_columns].ge(85).any(axis=1)]

结果验证

执行后result输出如下,仅保留Leo、Ann两条符合要求的记录:

Name  Score1  Score2  Score3
0      Leo      89      12      32
1      Ann      20      85      10

方案优势

  • 适配性强:后续新增/删除Score类列时无需修改筛选代码,哪怕扩展到10个甚至更多分数列逻辑依然生效
  • 性能优秀:全部使用pandas内置向量化运算,无逐行遍历逻辑,大数据量下运行效率远高于apply或循环写法
  • 逻辑简洁:没有冗余的多列或条件拼接,维护成本极低

内容的提问来源于stack exchange,提问作者stephsmith

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 12:21:21