You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 04:48:02