使用函数为学生成绩数据集添加grade列失败,如何解决?
问题分析与解决方案
核心问题总结
你的代码存在三个关键问题,导致grade列无法生成或不符合需求:
- 定义了函数但未调用,代码逻辑根本没执行
- 列名错误:使用了不存在的
Gave列,而非G1、G2、G3的平均值 - 及格条件逻辑偏离需求:依赖列的最大值计算阈值,而非固定的14分(20分的70%)
修正后的代码实现
def define_grade(df): # 计算G1、G2、G3三列的行平均值 df['avg_grade'] = df[['G1', 'G2', 'G3']].mean(axis=1) # 根据固定阈值14分判断及格状态 df['grade'] = df['avg_grade'].apply(lambda x: 'Pass' if x >= 14 else 'Fail') return df # 关键步骤:调用函数处理你的数据集(替换成实际DataFrame名称) df = define_grade(df) # 查看结果 df.head()
关键修正点说明
- 调用函数:必须执行
define_grade(df)才能触发逻辑,否则函数仅定义未运行 - 计算平均值:用
df[['G1','G2','G3']].mean(axis=1)生成每行的三列均值,匹配需求 - 固定阈值:直接使用14分作为及格线,避免因数据集最大值波动导致的判断错误
简化版实现(无需函数)
如果只是快速生成目标列,也可以省略函数,直接一行完成:
df['grade'] = df[['G1', 'G2', 'G3']].mean(axis=1).apply(lambda x: 'Pass' if x >=14 else 'Fail') df.head()
内容的提问来源于stack exchange,提问作者Geodel Isip
相关产品推荐
相关产品推荐

