如何将Pandas DataFrame的汇总数据与原始数据同表导出到Excel?
问题核心原因
你生成的summary DataFrame 把State、AvailabilityZone设为了多层行索引,默认情况下行索引不会被识别为普通数据列,合并导出时自然不会被写入Excel,只会保留统计值列。
解决步骤
- 生成汇总表时直接把多层索引重置为普通列,同时重命名统计结果列,避免和原始
State列重名冲突 - 可按需增加标识列区分原始数据和汇总行
- 合并后导出时无需额外设置丢弃索引即可正常展示所有字段
完整可运行代码示例
import pandas as pd # 生成汇总表:as_index=False 直接避免把分组字段设为索引,同时重命名统计列 summary = ec2_list.groupby( ['State','AvailabilityZone'], as_index=False )['State'].count().rename(columns={'State': '实例数量'}) # 可选:增加汇总标识列,方便在Excel中快速区分 summary['数据类型'] = '汇总统计' ec2_list['数据类型'] = '原始明细' # 合并两个表,重置全局行号 combined_df = pd.concat([ec2_list, summary], ignore_index=True) # 导出到Excel,index=False 仅丢弃pandas默认生成的数字行索引,业务列全部保留 combined_df.to_excel('EC2实例统计全量.xlsx', sheet_name='明细+汇总', index=False)
如果想要保留多层索引的合并单元格样式在Excel中展示,可以不用重置索引,导出时设置index=True即可,不过该样式和原始明细数据的列结构不匹配,更适合汇总表单独导出时使用。
内容的提问来源于stack exchange,提问作者Nidorino94
相关产品推荐
相关产品推荐

