Python pandas索引列存在重复条目时如何正确透视DataFrame
pandas多层列透视表参数设置解决方案
你遇到的报错是因为pd.pivot()要求index+columns的组合在原数据中唯一,你之前仅指定Color作为列维度时,同一个Size+Color分组下存在P1/P2/P3三个不同的Parameter取值,组合重复无法直接重塑。
方法1:使用pd.pivot()
如果原数据中Size+Parameter+Color的组合唯一,直接传递列表给columns参数指定双层列维度即可:
# 先确保Estimate列为数值类型,如果原数据是字符串需先转换 df['Estimate'] = pd.to_numeric(df['Estimate'], errors='coerce') # 生成双层列透视表 result = df.pivot( index='Size', columns=['Parameter', 'Color'], # 列维度第一层为Parameter,第二层为Color,匹配目标结构 values='Estimate' ) # 调整行顺序匹配目标的Big>Medium>Small result = result.reindex(['Big', 'Medium', 'Small'])
方法2:使用pd.pivot_table()
如果存在重复的Size+Parameter+Color组合,用pivot_table指定聚合规则更稳妥:
result = df.pivot_table( index='Size', columns=['Parameter', 'Color'], values='Estimate', aggfunc='sum' # 可根据需求替换为mean、first等聚合函数 ).reindex(['Big', 'Medium', 'Small'])
最终输出的result结构完全匹配目标格式,第一层列索引为P1/P2/P3,第二层为对应颜色的数值。
内容的提问来源于stack exchange,提问作者LostinSpatialAnalysis
相关产品推荐
相关产品推荐

