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

如何利用遍历得到的文件名读取并按指定列合并Excel文件?

解决Excel文件读取与按指定列合并的问题

先修正几个关键问题

  1. 直接用path+filename拼接路径容易出错(比如路径末尾无斜杠时会导致路径拼接错误),改用os.path.join()才是规范写法
  2. 读取Excel不需要手动open(),pandas的read_excel()可以直接接收文件路径

完整实现代码

import os
import pandas as pd

# 目标文件夹路径
path = '/Desktop/somefolder'
# 用于存储所有读取后的DataFrame
df_list = []

# 遍历文件夹中的文件,只处理Excel格式
for filename in os.listdir(path):
    if filename.lower().endswith(('.xlsx', '.xls', '.xlsm')):
        # 正确拼接文件完整路径
        full_path = os.path.join(path, filename)
        # 读取Excel为DataFrame
        df = pd.read_excel(full_path)
        # 可选:添加一列记录数据来源文件路径,方便后续溯源
        df['source_file'] = full_path
        # 将当前DataFrame加入列表
        df_list.append(df)

两种合并方式(根据你的需求选择)

1. 按指定列对齐后纵向堆叠(concat)

如果是要把所有Excel的数据按列名对齐,纵向拼接到一起,同时基于指定列排序:

# 替换为你的目标列名
target_column = '你的指定列名'
# 纵向拼接所有DataFrame,重置索引
combined_df = pd.concat(df_list, axis=0, ignore_index=True)
# 按指定列排序(可选)
combined_df = combined_df.sort_values(by=target_column).reset_index(drop=True)

2. 按指定列作为主键进行关联合并(merge)

如果是要像SQL JOIN那样,基于指定列匹配不同Excel中的数据:

# 替换为你的目标主键列名
key_column = '你的指定列名'
# 以第一个DataFrame为基础,依次合并后续所有DataFrame
combined_df = df_list[0]
for df in df_list[1:]:
    # how参数可选:inner(交集)/outer(并集)/left(左表全保留)/right(右表全保留)
    combined_df = pd.merge(combined_df, df, on=key_column, how='outer')

注意事项

  • 确保所有Excel文件的目标列名完全一致(大小写、空格都要对应),否则合并会失效
  • 如果Excel有多个工作表,可在read_excel()中指定sheet_name参数(比如sheet_name='Sheet1')
  • 若文件较大,可考虑分块读取优化内存占用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 05:50:40