Python如何迭代读取Excel多表并按日期列表替换列名后保存
基于pandas的Excel多工作表批量列名替换实现方法
- 适配场景:源文件
data.xlsx包含多个结构完全一致的工作表,所有工作表原始列固定为['ISIN', 'Coupon', 'Issue Date', 'Maturity Date'] - 核心规则:按工作表默认读取顺序,逐表将
ISIN列名替换为date_list中同序号的元素,其余列名保持不变,最终将修改后的内容输出为独立的Excel文件,不修改源文件
完整可运行实现代码
import pandas as pd # 读取源文件的所有工作表信息 src_xls = pd.ExcelFile('data.xlsx') all_sheets = src_xls.sheet_names # 替换用的列名序列,使用时替换为完整的、长度与工作表数匹配的列表 date_list = ['2021-01', '2021-02', '2021-03'] # 存储处理完成的工作表内容 sheet_container = {} # 逐表处理 for sheet_idx, sheet_name in enumerate(all_sheets): # 读取当前工作表数据 df = pd.read_excel('data.xlsx', sheet_name=sheet_name) # 仅替换ISIN列名,其余列保持原有名称 df = df.rename(columns={'ISIN': date_list[sheet_idx]}) sheet_container[sheet_name] = df # 将所有处理后的工作表写入新文件 with pd.ExcelWriter('processed_result.xlsx') as writer: for target_sheet, df_data in sheet_container.items(): # index=False 避免把pandas的行索引当成额外列写入文件 df_data.to_excel(writer, sheet_name=target_sheet, index=False)
实现逻辑说明
- 借助
enumerate同时获取工作表的顺序索引,保证每个工作表和date_list的元素严格按顺序对应:sheet1对应列表第1个元素2021-01,sheet2对应列表第2个元素2021-02,完全符合预期输出结构- 列名替换操作仅作用于
ISIN列,不会改动其他列的原有命名- 所有数据处理环节在内存中完成,全程不修改原始
data.xlsx文件,避免误操作损坏源数据- 写入时关闭默认的索引导出,输出文件结构和源文件保持一致,无冗余列
内容的提问来源于stack exchange,提问作者ah bon
相关产品推荐
相关产品推荐

