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

如何在Pandas合并后保留每个studentid的最早记录?

解决方法

步骤1:合并DataFrame

先执行你原本的合并操作得到Z:

Z = X.merge(Y, on="studentid")

步骤2:处理年份列,实现可排序

原始年份是"20/21"这类字符串,没法直接比较先后,我们提取年份的起始部分转成数值:

# 把"20/21"转换成2020,"21/22"转换成2021,方便判断年份早晚
Z['start_year'] = Z['Year'].str.split('/').str[0].astype(int) + 2000

步骤3:筛选每个studentid的最早记录

按studentid分组,提取每组中年份最早的那条数据:

# idxmin()会返回每个组里start_year最小的行的索引,用loc提取这些行
result = Z.loc[Z.groupby('studentid')['start_year'].idxmin()]

可选:清理临时列

如果不需要start_year这个临时辅助列,直接删掉即可:

result = result.drop('start_year', axis=1)

另一种更简洁的写法(不用临时列也能实现):

# 先给Z按studentid和转换后的年份排序
Z_sorted = Z.sort_values(
    by=['studentid', 'Year'],
    key=lambda x: x.str.split('/').str[0].astype(int) + 2000
)
# 保留每个studentid的第一条记录(也就是最早年份的那条)
result = Z_sorted.drop_duplicates(subset='studentid', keep='first')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 19:50:25