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

Pandas存在重复值时如何行转列生成多列成绩的宽表

解决方案

你报错的核心原因是直接做变形时,name+school的组合下存在多条重复记录,没有唯一的列标识用于匹配,因此会触发重复索引报错。你可以先给同一个分组下的成绩加序号作为列后缀,再做宽表转换即可:

完整实现代码

# 1. 给每个name分组下的成绩添加序号(1、2、3...),用作后续的列后缀
df['mark_seq'] = df.groupby(['name', 'school']).cumcount().add(1)

# 2. 执行长表转宽表,给列名添加marks_前缀
df = df.pivot(index=['name', 'school'], columns='mark_seq', values='marks')\
    .add_prefix('marks_')\
    .reset_index()

# 3. 清除列名上方的冗余索引名
df = df.rename_axis(None, axis=1)

# 如果需要把空值替换为空字符串,可额外加这一行
# df = df.fillna('')

运行后即可得到你需要的目标格式:

nameschoolmarks_1marks_2marks_3
tomHBS555514
markHBS2819NaN
lewisHBS88NaNNaN

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 03:06:04