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

如何获取Pandas DataFrame中所有参数值均小于0.05的首行ID

问题解决:Pandas筛选首次满足多列全部小于阈值的行ID

错误原因

你原有代码的核心问题是:仅对P1-P4每个单元格单独做是否小于0.05的判断,得到的是和P列同维度的布尔矩阵,无法直接用来筛选整行。行筛选需要的是一维布尔序列,标识该行所有P列是否都满足小于0.05的条件。

正确实现代码

import pandas as pd

df = pd.DataFrame({"ID": [1,2,3,4,5,6],
                   "P1": [0.50,0.20,0.10,0.08,0.04,0.03],
                   "P2": [0.06,0.05,0.05,0.04,0.04,0.04],
                   "P3": [0.20,0.15,0.10,0.06,0.04,0.02],
                   "P4": [0.01,0.01,0.01,0.01,0.01,0.01]})

# 逐行判断所有P列是否都小于0.05,取第一个符合条件的ID
first_qualified_id = df[df[['P1','P2','P3','P4']].lt(0.05).all(axis=1)]['ID'].iloc[0]
print(first_qualified_id)

运行输出为5,符合预期。

关键逻辑说明

  • .lt(0.05):pandas逐元素判断小于0.05的方法,等价于 < 0.05写法
  • .all(axis=1):指定按行维度做逻辑与判断,只有某行所有P列的判断结果都为True时,该行最终返回True,得到行筛选需要的一维布尔序列
  • .iloc[0]:取筛选结果的第一行数据,也就是首次满足条件的记录

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 11:57:03