Python Pandas生成Excel时汇总页无法设为首页的问题求助
问题修复:将Excel汇总工作表设为首页
原代码无法将汇总页设为首页的核心问题是使用了错误的工作表重排方式,同时可以通过优化写入顺序避免额外的排序操作。以下是修复后的完整代码:
import pandas as pd # 加载CSV数据 df = pd.read_csv('my_file.csv') # 读取文本文件中的数据类型列表 with open('data_types.txt', 'r') as file: data_types = file.read().splitlines() # 筛选出指定数据类型的记录 filtered_df = df[df['a'].isin(data_types)] # 创建Excel写入器 writer = pd.ExcelWriter('filtered_data.xlsx', engine='xlsxwriter') # 先准备汇总数据 summary_data = [] for data_type in data_types: type_filtered_df = filtered_df[filtered_df['a'] == data_type] summary_data.append([data_type, len(type_filtered_df)]) # 创建汇总DataFrame并写入工作表 summary_df = pd.DataFrame(summary_data, columns=['Data Type', 'Total Rows']) summary_df.to_excel(writer, sheet_name='Summary', index=False) # 获取汇总工作表对象,合并表头单元格 summary_sheet = writer.sheets['Summary'] summary_sheet.merge_range('A1:B1', 'Header') # 再写入各数据类型的工作表(此时汇总表默认在首位) for data_type in data_types: type_filtered_df = filtered_df[filtered_df['a'] == data_type] type_filtered_df.to_excel(writer, sheet_name=f'Type_{data_type}', index=False) # 保存并关闭文件 writer.close()
关键改动说明:
- 调整写入顺序:先写入汇总工作表,再写入各数据类型工作表,汇总表会默认成为Excel的第一个工作表,无需额外排序操作,逻辑更高效简洁。
- 优化表头处理:去掉原代码中多余的
concat创建表头的方式,直接在写入汇总表后合并A1:B1单元格设置表头,流程更清晰。
如果必须在所有工作表写入完成后调整顺序,可替换原代码中的排序部分为以下代码(适用于特殊场景):
# 所有工作表写入完成后重排顺序 workbook = writer.book sheets = workbook.sheetnames # 将Summary移到列表首位 sheets.insert(0, sheets.pop(sheets.index('Summary'))) # 使用xlsxwriter的reorder_worksheets方法一次性完成重排 workbook.reorder_worksheets(sheets)
内容的提问来源于stack exchange,提问作者Vui Chee Chang
相关产品推荐
相关产品推荐

