You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Pandas保存DataFrame到Excel时调整表头格式?

Pandas导出Excel时如何修复表头层级错位问题?

你提到用Pandas生成交叉表后导出Excel,出现了Month、Activity、Name表头被拆分到不同列的问题,这其实是因为导出时的索引处理和多层列索引的显示逻辑导致的,Pandas有内置参数可以完美解决这个问题,下面给你两种可行的方案:

方法一:保留Name为行索引(推荐)

你的pd.crosstab已经自动把Name设为行索引了,完全没必要用reset_index把它转成列。只需要在导出时开启单元格合并,Pandas会自动处理多层表头的格式:

import pandas as pd
from pandas import DataFrame
list_me = [['A','A','A','A','A','B','C','D','D','D','D'], ['TT','TT','UU','UU','UU','UU','UU','TT','TT','TT','TT'], ['5','2','1','1','1','40','10','2','2','2','2'], ['1','1','1','2','3','3','1','2','2','2','1']]
df = DataFrame(list_me).transpose()
df.columns = ['Name','Activity','Hour','Month']
# 生成交叉表,Name作为行索引
df_tab = pd.crosstab(df.Name, columns=[df.Month, df.Activity], values=df.Hour, aggfunc='sum').fillna(0)
# 导出时开启merge_cells,自动合并多层表头的单元格
df_tab.to_excel("output.xlsx", merge_cells=True)

导出后的Excel效果:

  • 第一列就是Name,没有多余的数字索引列
  • 表头分为两层:第一层是Month的不同取值,第二层是对应每个Month的Activity,同个Month下的Activity单元格会自动合并,完全不会出现拆分错位的情况

方法二:将Name转为普通列(按需选择)

如果你确实需要把Name从行索引转成普通列,那导出时要记得去掉默认的数字索引,同时开启单元格合并:

import pandas as pd
from pandas import DataFrame
list_me = [['A','A','A','A','A','B','C','D','D','D','D'], ['TT','TT','UU','UU','UU','UU','UU','TT','TT','TT','TT'], ['5','2','1','1','1','40','10','2','2','2','2'], ['1','1','1','2','3','3','1','2','2','2','1']]
df = DataFrame(list_me).transpose()
df.columns = ['Name','Activity','Hour','Month']
df_tab = pd.crosstab(df.Name, columns=[df.Month, df.Activity], values=df.Hour, aggfunc='sum').fillna(0)
# 将Name从行索引转为普通列
df_tab.reset_index(level=0, inplace=True)
# 导出时设置index=False去掉数字索引,同时开启merge_cells处理表头
df_tab.to_excel("output.xlsx", index=False, merge_cells=True)

这样导出的Excel里,Name是第一列,后面的表头是分层的Month和Activity,格式完全符合你的预期,不会再出现表头拆分的问题。

问题根源说明

你之前的代码之所以出问题,是因为导出时没有设置index=False,Pandas默认把DataFrame的数字索引(0、1、2...)作为第一列,导致Name列被挤到第二列,而多层表头的Month/Activity是跨列显示的,最终就出现了表头和列错位、拆分的情况。加上merge_cells=True是让Pandas自动合并多层表头的单元格,让表头显示更规整。

内容的提问来源于stack exchange,提问作者rpb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 13:42:50