使用Pandas实现多列表格的逆透视转换
解决方法
可以通过 Pandas 的 melt() 方法快速实现多层列索引 DataFrame 到目标长格式表格的转换,步骤如下:
1. 确认原数据结构
假设你的原 DataFrame 满足:
- 行索引为
Date和Hour(或这两列为普通列) - 列是三层 MultiIndex,层级名称分别为
Concept0、Concept1、Concept2,对应的值为Unit列的数值
2. 具体代码实现
import pandas as pd # 假设原DataFrame名为df # 第一步:如果Date和Hour是行索引,先转为普通列 df = df.reset_index() # 第二步:使用melt转换格式 result_df = df.melt( id_vars=['Date', 'Hour'], # 保留不转换的列 var_name=['Concept0', 'Concept1', 'Concept2'], # 多层列索引的名称 value_name='Unit' # 数值列的名称 )
3. 验证结果
执行上述代码后,result_df 的结构就会和你期望的表格完全一致:
| Date | Hour | Concept0 | Concept1 | Concept2 | Unit |
|---|---|---|---|---|---|
| 2022-07-29 | 1 | A | M | X | 0.1 |
| 2022-07-29 | 1 | A | M | Y | 0.2 |
| 2022-07-29 | 1 | A | N | W | 0.3 |
| 2022-07-29 | 1 | A | N | Z | 0.4 |
如果原 DataFrame 的列层级名称和示例不同,只需要修改 var_name 里的参数对应实际层级名即可。
内容的提问来源于stack exchange,提问作者user19648611
相关产品推荐
相关产品推荐

