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

Python实现:合并多Excel文件并统一相似表头为指定名称

解决Excel多文件合并并统一相似表头的问题

核心思路

先定义表头映射规则,把所有包含Supplier/Vendor关键词的表头统一映射为Supplier ID,读取每个文件后先重命名列,再只保留需要的Supplier ID和Ticket ID列,最后合并所有数据。

修改后的代码

import pandas as pd
import os

# 定义表头映射:将相似表头统一为目标列名
header_mapping = {
    'Vendor ID': 'Supplier ID',
    'Supplier original ID': 'Supplier ID',
    'Supplier ID': 'Supplier ID',
    # 可按需添加其他需要映射的表头
}

# 源Excel文件所在文件夹路径(根据实际路径修改)
folder_path = './excel_files'
all_processed_data = []

# 遍历文件夹内所有Excel文件
for filename in os.listdir(folder_path):
    if filename.endswith(('.xlsx', '.xls')):
        file_full_path = os.path.join(folder_path, filename)
        df = pd.read_excel(file_full_path)
        
        # 按规则重命名列
        df = df.rename(columns=lambda col_name: header_mapping.get(col_name, col_name))
        
        # 处理意外出现的多列Supplier ID(横向填充后取第一列)
        if 'Supplier ID' in df.columns:
            df['Supplier ID'] = df['Supplier ID'].bfill(axis=1).iloc[:, 0]
        
        # 只保留需要的列,缺失列自动填充空值
        required_columns = ['Ticket ID', 'Supplier ID']
        df = df.reindex(columns=required_columns)
        
        all_processed_data.append(df)

# 合并所有数据并保存
final_merged_df = pd.concat(all_processed_data, ignore_index=True)
final_merged_df.to_excel('merged_master.xlsx', index=False)

关键代码说明

  • header_mapping:集中管理表头映射规则,后续新增相似表头直接追加键值对即可。
  • df.rename(columns=lambda col_name: header_mapping.get(col_name, col_name)):遍历所有列名,匹配到规则的替换为目标名,未匹配的保留原名。
  • df.reindex(columns=required_columns):确保最终只保留指定列,即使源文件缺少某列,也会生成空值列,避免合并报错。
  • 多列合并逻辑:若某文件意外出现多个映射后的Supplier ID列,用横向填充后取第一列,避免数据丢失。

额外提示

如果需要保留其他列,直接修改required_columns列表添加对应列名即可。

内容的提问来源于stack exchange,提问作者Marcelo Estrada

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 07:21:36