如何使用Pandas将DataFrame列的name属性写入Excel?
解决pandas写入Excel时列name属性无法保存的问题
针对你遇到的问题——使用df.to_excel()时,索引的name(class1)能正常写入,但列的name(class2)无法导出到Excel,这里提供两种可行的解决方案:
方法一:手动写入列名标题(保留原DataFrame结构)
通过ExcelWriter直接操作工作表,先写入列的name到指定单元格,再从下一行开始写入DataFrame,既能保留原数据结构,又能完整导出索引名和列名:
import pandas as pd df = pd.DataFrame({'A':[1,2,3],'B':[4,5,6]}) df.index.name = 'class1' df.columns.name = 'class2' with pd.ExcelWriter('output.xlsx') as writer: # 获取工作表对象 worksheet = writer.sheets['Sheet1'] # 将列的name写入A1单元格 worksheet.write('A1', df.columns.name) # 从第2行(索引为1)开始写入DataFrame,保留索引 df.to_excel(writer, startrow=1, index=True)
方法二:将列名转为MultiIndex(自动导出列name)
如果可以接受多级表头的形式,把列的name作为MultiIndex的第一级,to_excel会自动识别并导出这个层级:
import pandas as pd df = pd.DataFrame({'A':[1,2,3],'B':[4,5,6]}) df.index.name = 'class1' df.columns.name = 'class2' # 把列的name整合为MultiIndex的第一级 df.columns = pd.MultiIndex.from_tuples([(df.columns.name, col) for col in df.columns]) # 写入Excel,索引保持开启 df.to_excel('output.xlsx', index=True)
两种方法的区别:
- 方法一更轻量化,不修改原DataFrame结构,适合仅需添加列名标题的场景;
- 方法二会改变列的结构,生成多级表头,适合需要明确层级关系的报表需求。
内容的提问来源于stack exchange,提问作者user3072573
相关产品推荐
相关产品推荐

