如何将Python DataFrame转为多级表头 使用pd.MultiIndex.from_product()失败求助
实现方案
核心是用pivot方法完成长表转宽表,再调整列层级顺序即可,完整实现代码如下:
import pandas as pd # 假设df为你的Output1对应DataFrame # 1. 长表转宽表 res = df.pivot( index="Date", columns="Name", values=["Raised", "Recvd", "Donated"] ) # 2. 交换列层级,将人名放在上层、指标放在下层 res = res.swaplevel(axis=1) # 3. 调整列顺序为需求指定的John→Mary→David,指标顺序Raised→Recvd→Donated col_order = pd.MultiIndex.from_product( [["John", "Mary", "David"], ["Raised", "Recvd", "Donated"]] ) res = res.reindex(col_order, axis=1) # 4. 可选:清除列索引名称,匹配Output2的显示样式 res.columns.names = [None, None] res = res.reset_index()
问题说明
你之前直接用pd.MultiIndex.from_product无法得到正确结果,是因为没有先完成长表到宽表的结构转换,直接给原有长表套多层索引自然匹配不上数据顺序,先通过pivot完成维度转换是核心步骤。
内容的提问来源于stack exchange,提问作者Herman L
相关产品推荐
相关产品推荐

