Pandas如何调整透视表多级列顺序 实现B值为一级列头格式
pandas透视表调整列层级顺序实现方案
你调用pivot时传入多个values字段,pandas默认会将values列表的字段作为列MultiIndex的最外层,columns参数指定的B列取值作为内层,和你预期的层级顺序刚好相反,不需要重构原始数据,直接对透视结果的列层级做交换调整即可。
- 第一步:执行原有的透视逻辑
pivot_res = df.pivot(index='A', columns='B', values=['C', 'D', 'E', 'F'])
- 第二步:交换列的层级顺序,重排列对齐结构
# axis=1指定操作列维度,swaplevel交换两层索引位置,sort_index按一级列归类排序 final_res = pivot_res.swaplevel(axis=1).sort_index(axis=1)
如果不需要保留列索引的名称(比如输出中最顶部的B标识),可以追加一行代码清理:
final_res.columns.names = (None, None)
效果验证
用测试数据跑上述代码,输出结构完全匹配预期:
v1 v2 C D E F C D E F A a1 1 5 9 13 2 6 10 14 a2 3 7 11 15 4 8 12 16
内容的提问来源于stack exchange,提问作者icl
相关产品推荐
相关产品推荐

