pandas将DataFrame写入Excel时添加自定义多行表头的实现方案问询
你可以配合pandas+openpyxl实现需求,不需要修改原始DataFrame的索引结构,也不用依赖多级索引,思路是先把数据写入Excel指定的起始行,空出前面的位置手动补充自定义表头内容,具体实现代码如下:
import pandas as pd from openpyxl import load_workbook from openpyxl.styles import Alignment, Border, Side # 你的原始DataFrame df = pd.DataFrame([[1, 2], [1, 3], [4, 6]], columns=['A', 'B']) output_path = "output.xlsx" # 导出时关闭pandas自带的表头,数据从Excel第6行(1-based)开始写入,对应pandas的startrow=5(0-based) df.to_excel(output_path, startrow=5, index=False, header=False) # 加载生成的Excel文件补全自定义表头 wb = load_workbook(output_path) ws = wb.active # 第一行表头:合并A1-B1单元格,填写App Input ws.merge_cells('A1:B1') ws['A1'] = "App Input" # 可选:给第二、三行添加下边框实现示例里的分隔线效果 thin_border = Border(bottom=Side(style='thin')) for col in ['A', 'B']: ws[f'{col}2'].border = thin_border ws[f'{col}3'].border = thin_border # 第四行填写原始列名 ws['A4'] = "A" ws['B4'] = "B" # 第五行填写data标识 ws['A5'] = "data" ws['B5'] = "data" # 可选:所有表头内容居中对齐 for row in ws.iter_rows(min_row=1, max_row=5): for cell in row: cell.alignment = Alignment(horizontal='center', vertical='center') # 保存修改后的文件 wb.save(output_path)
你可以根据实际需求调整表头的行数、内容、合并单元格范围、样式,不需要改动DataFrame本身的结构,适配你不想用多级索引的场景。
内容的提问来源于stack exchange,提问作者HoneyBadger786
相关产品推荐
相关产品推荐

