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

Pandas使用unstack报错索引含重复项无法变形,如何转换得到目标宽表?

解决方法

方法1:直接使用pivot长表转宽表(最简洁)

pivot是Pandas专门用于长格式表格转宽格式的接口,直接指定索引、要展开的列、填充值即可:

res = df.pivot(index=['Site', 'Month'], columns='Class', values='Data').reset_index()

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

方法2:修正set_index+unstack的写法

你之前的写法报错是因为没有把Class列加入索引,导致同组Site+Month存在多行重复索引。调整写法如下:

res = df.set_index(['Site', 'Month', 'Class'])['Data'].unstack('Class').reset_index()

把Class加入索引后取Data列再执行unstack,就不会出现重复索引报错。

方法3:用pivot_table兼容聚合场景

如果你的实际数据中存在同一个Site+Month+Class组合对应多条数据的情况,用pivot_table可以同时完成聚合和转宽操作:

# 这里aggfunc可以根据需求替换为mean、max等聚合函数
res = df.pivot_table(index=['Site', 'Month'], columns='Class', values='Data', aggfunc='sum').reset_index()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 13:15:05