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

如何在Pandas中实现分组提取下一行成绩的条件逻辑?

Pandas实现按学生分组生成下一次测试成绩列

原始数据

StudentTestGrade
Jimmy1100
Jimmy283
Jimmy385
Drew193
Drew295
Drew3100
Smith189
Smith286
Smith389
Billy197
Billy280
Billy378

需求说明

按学生姓名分组,新增Nexscore列存储同组下一次测试的成绩;每组最后一次测试的Nexscore设为NaN。处理后Jimmy的示例如下:

StudentTestGradeNexscore
Jimmy110083
Jimmy28385
Jimmy385NaN

实现方法

直接使用Pandas的groupby结合shift方法即可完成,核心逻辑是对每组的Grade列向上偏移一位:

import pandas as pd

# 构造或加载数据(这里以构造示例数据为例)
data = {
    'Student': ['Jimmy', 'Jimmy', 'Jimmy', 'Drew', 'Drew', 'Drew', 'Smith', 'Smith', 'Smith', 'Billy', 'Billy', 'Billy'],
    'Test': [1,2,3,1,2,3,1,2,3,1,2,3],
    'Grade': [100,83,85,93,95,100,89,86,89,97,80,78]
}
df = pd.DataFrame(data)

# 生成Nexscore列:按学生分组后,将Grade列向上偏移一位
df['Nexscore'] = df.groupby('Student')['Grade'].shift(-1)

逻辑解释

  • groupby('Student'):将数据按学生姓名分组,确保仅在同一学生的测试记录内处理。
  • shift(-1):对每组的Grade列执行向上偏移操作,当前行的Nexscore自动取同组下一行的Grade值;每组最后一行没有后续数据,会自动填充为NaN,完全符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 14:29:09