Python如何合并带3行表头的多个Excel文件并保留表头按日期合并
多层表头Excel合并解决方案
实现逻辑
- 读取Excel时不跳行,先提取前3行作为多层列索引的三个层级
- 数据部分从第4行开始读取,绑定多层列索引后处理日期列格式并排序
- 所有表格按
date字段做外连接合并,导出时保留多层索引结构,Excel会自动合并对应表头单元格
完整代码
import pandas as pd import glob merged_df = pd.DataFrame() for file in glob.glob('./*.xlsx'): # 读取文件全部内容 raw = pd.read_excel(file, header=None) # 提取三层表头 l1_country = raw.iloc[0].tolist() l2_feature = raw.iloc[1].tolist() l3_update = raw.iloc[2].tolist() # 构造多层列索引 df_columns = pd.MultiIndex.from_tuples( list(zip(l1_country, l2_feature, l3_update)), names=['country', 'feature_name', 'update_date'] ) # 提取有效数据,绑定列索引 df = raw.iloc[3:] df.columns = df_columns # 处理日期列 df = df.rename(columns={df.columns[0]: 'date'}) df['date'] = pd.to_datetime(df['date'], format='%Y-%m-%d').astype(str) df = df.sort_values(by='date').reset_index(drop=True) if merged_df.empty: merged_df = df else: merged_df = merged_df.merge(df, on='date', how='outer') # 全局排序后导出 merged_df = merged_df.sort_values(by='date').reset_index(drop=True) merged_df.to_excel('./merged_result.xlsx', index=False)
内容的提问来源于stack exchange,提问作者ah bon
相关产品推荐
相关产品推荐

