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

Pandas如何按平均成绩条件新增Final Grade列标记及格/不及格

dataframe表格截图

问题根因

你写的代码存在两个核心问题:

  1. Python原生的if/else分支仅支持对单个布尔值做判断,而df_exams.loc[(df_exams['Average Grade'] >= 75)]返回的是所有满足分数条件的行子集,是DataFrame对象,不是单个True/False布尔值,直接放在if后会触发真值判断歧义报错。
  2. 你定义的不通过分支返回值是'FAIL',和需求要求的'FAILED'字符串不一致,就算逻辑跑通结果也不符合要求。
正确实现方法

以下两种是pandas做条件赋值最常用的方案,按需选择即可:

  • 方案1:numpy.where(性能最优,推荐万行以上数据集使用)
    先导入numpy库,再做逐元素条件判断赋值:
    import numpy as np
    df_exams['Final Grade'] = np.where(
        df_exams['Average Grade'] >= 75,
        'PASSED',
        'FAILED'
    )
    
  • 方案2:列表推导式(无需额外导包,逻辑最贴合新手直觉)
    直接遍历Average Grade列的每个值做判断,生成新列:
    df_exams['Final Grade'] = ['PASSED' if s >= 75 else 'FAILED' for s in df_exams['Average Grade']]
    
结果校验

运行代码后可以执行下面的语句随机抽查10行结果,确认赋值逻辑正确:

print(df_exams[['Average Grade', 'Final Grade']].sample(10))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 09:42:23