如何对多级表头DataFrame执行Pivot/Stack操作?
解决方案
场景1:修复CSV读取后带空白的多级列名
如果你的CSV表头是两行结构(第一行是类别A/B但隔列空白,第二行是min/max),读取后列名第一级会出现空白值,可通过向前填充补全:
# 读取CSV文件(指定两行作为表头,item列为索引) df = pd.read_csv('your_file.csv', header=[0,1], index_col='item') # 补全第一级列名的空白值 df.columns = df.columns.set_levels(df.columns.get_level_values(0).ffill(), level=0)
执行后就能得到示例中无空白的正确两级列头结构。
场景2:转换为长格式DataFrame
如果是想把现有多级列的宽表转成每行对应一个类别(A/B)的长表,用stack方法即可,比pivot table更直接:
# 将第一级列(A/B)堆叠为行 df_long = df.stack(level=0).reset_index() # 重命名列名让结构更清晰 df_long.columns = ['item', 'category', 'min', 'max']
最终输出结果:
| item | category | min | max |
|---|---|---|---|
| 0 | A | 0.009359 | 0.499058 |
| 0 | B | 0.113384 | 0.049974 |
| 1 | A | 0.685408 | 0.486988 |
| 1 | B | 0.897657 | 0.647452 |
| 2 | A | 0.896963 | 0.721135 |
| 2 | B | 0.831353 | 0.827568 |
内容的提问来源于stack exchange,提问作者Avash
相关产品推荐
相关产品推荐

