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

Python新手求助:如何重塑DataFrame?解决pivot重复索引报错

解决DataFrame重塑时的重复索引报错问题

报错原因

执行pivot失败是因为你的数据中同一Drug对应了多条相同QtyDelivered的记录,pivot要求index+columns的组合必须唯一,重复条目会触发ValueError。

解决方案

推荐使用pivot_table(支持聚合重复项,适合新手)或groupby+unstack来实现需求,以下是具体代码示例:

方法1:pivot_table(推荐)

pivot_table会自动对重复的index+columns组合执行聚合操作,你可以根据需求指定聚合逻辑(计数、求和等):

# 示例:统计每个Drug对应不同QtyDelivered的记录条数
result = df.pivot_table(
    index='Drug',
    columns='QtyDelivered',
    aggfunc='size',  # 用size实现计数,也可以替换为sum/mean等
    fill_value=0     # 空值填充为0
)

# 如果需要保留重复条目的具体值(用列表存储)
result = df.pivot_table(
    index='Drug',
    columns='QtyDelivered',
    values='你要保留的列名',  # 替换为实际列名
    aggfunc=list,
    fill_value=''
)

方法2:groupby + unstack

先按Drug和QtyDelivered分组聚合,再将分组后的列展开:

# 示例:统计记录条数
result = df.groupby(['Drug', 'QtyDelivered']).size().unstack(fill_value=0)

# 示例:对某列求和
result = df.groupby(['Drug', 'QtyDelivered'])['目标列名'].sum().unstack(fill_value=0)

结果说明

运行上述代码后,得到的result会以Drug为行索引,不同的QtyDelivered为列,对应值为聚合后的结果,符合你的目标格式要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 10:22:23