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
相关产品推荐
相关产品推荐

