Pandas pivot重塑DataFrame报索引含重复条目无法变形的解决方法
报错原因
pivot 方法要求index与columns参数指定的列的组合值必须全局唯一,你的数据集里存在至少一组(id, question)重复出现的记录,因此无法直接重塑。
解决方案
方案1:先去重再用pivot
如果重复的(id, question)记录对应的answer完全一致,先删除重复项再执行原逻辑即可:
# 先按id和question去重 df = df.drop_duplicates(subset=['id', 'question']) # 执行原pivot逻辑 df_result = df.pivot(index='id', columns='question', values='answer').reset_index() # 可选:移除columns的name标识 df_result.columns.name = None
方案2:用pivot_table指定聚合规则
如果同一个(id, question)对应多个不同的answer,你需要明确聚合规则后用pivot_table实现:
df_result = df.pivot_table( index='id', columns='question', values='answer', # 聚合规则可按需替换:'last'取最后一个值,lambda x: ','.join(x)合并所有值 aggfunc='first' ).reset_index() df_result.columns.name = None
执行以上任意一种符合你数据场景的代码,都可以得到你需要的宽表结构。
内容的提问来源于stack exchange,提问作者MClaver89
相关产品推荐
相关产品推荐

