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

基于Pandas的多条件测试结果分组判定方法咨询

Pandas 多测试项按ID批量判定场景的函数推荐

需求说明

有包含重复ID的测试数据,需完成两个核心任务:

  1. 给每行的测试值标注(OK)或(Fail)
  2. 按ID判定:若该ID的所有测试项至少通过一次,整体标记为"OK";否则标记为"Fail"

原始DataFrame

IDtest 1test 2test 3
A538
B379
A734
A180
B637

预期输出

每行测试值追加判定标记,同时最终ID整体判定:

IDtest 1test 2test 3
A5 (OK)3 (Fail)8 (Fail)
A7 (Fail)3 (OK)4 (Fail)
A1 (OK)8 (OK)0 (OK)
B6 (OK)3 (OK)7 (Fail)
B3 (Fail)7 (OK)9 (Fail)
  • ID A:所有测试项至少通过一次 → 整体"OK"
  • ID B:test 3从未通过 → 整体"Fail"

适用Pandas函数推荐

以下函数可高效实现需求,替代手动遍历:

  • groupby('ID'):按ID分组,直接聚合同ID的所有行,是批量处理的核心基础,无需手动检查重复值。
  • transform():配合groupby使用,能在保留原始DataFrame行结构的前提下,将分组计算结果映射到每一行。例如可以标记当前行所属ID是否在某测试项有过通过记录。
  • agg()/aggregate():分组后对每个测试项做聚合计算,比如用lambda x: any(x >= 阈值)判断该ID的某测试项是否至少有一次通过,快速得到各ID的测试项通过情况。
  • apply():用于自定义逻辑处理(比如给测试值拼接(OK)/(Fail)字符串),可针对单行或单列灵活实现标注逻辑。
  • merge():将分组得到的ID整体判定结果,关联回原始标注后的DataFrame,快速整合最终结果。

对应步骤的函数应用示例

  1. 按ID聚合:直接用df.groupby('ID')替代手动筛选重复ID行
  2. 标注每行测试结果:对测试列用apply执行自定义判定,如df['test 1'] = df['test 1'].apply(lambda x: f"{x} (OK)" if x <=5 else f"{x} (Fail)")
  3. 判定ID整体合格性:通过groupby('ID').agg({'test 1': lambda x: any(x <=5), 'test 2': ..., 'test 3': ...})得到各测试项的通过状态,再用all(axis=1)判断是否所有测试项都满足至少通过一次,最终生成ID的整体标记。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 18:06:32