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

Python遍历Excel文件目录并合并至DataFrame底部的技术实现求助

批量处理Excel文件并合并数据到单个DataFrame

我之前也做过类似的批量Excel处理需求,你的思路完全靠谱——先验证单个文件的处理逻辑,再循环批量处理合并。下面给你调整后的完整实现方案,一步步帮你搞定:

核心实现思路

  • 先初始化一个空的DataFrame,用来存放所有合并后的最终数据
  • 遍历目标文件夹里的所有文件,只筛选Excel格式的文件避免报错
  • 对每个文件复用你已经验证过的读取和格式化逻辑
  • 将处理好的单文件数据追加到总DataFrame中

完整代码示例

import pandas as pd
import os

# 设置你的目标文件夹路径,替换成实际路径比如"C:/MyExcelFiles"
path = "你的文件夹路径"
# 初始化空的总DataFrame
combined_df = pd.DataFrame()

# 遍历文件夹中的所有文件
for filename in os.listdir(path):
    # 只处理.xlsx和.xls格式的Excel文件,过滤其他杂文件
    if filename.endswith(('.xlsx', '.xls')):
        # 用os.path.join拼接路径,避免Windows/Linux路径分隔符问题
        file_path = os.path.join(path, filename)
        print(f"正在处理文件: {filename}")
        
        # 复用你已经验证过的读取逻辑
        df = pd.read_excel(
            file_path,
            sheet_name="sheet2",
            skiprows=2,
            header=None,
            skipfooter=132
        )
        
        # 这里粘贴你已经写好的所有格式化代码
        # ...(比如数据清洗、列重命名、格式转换等操作)
        
        # 将当前文件的DataFrame追加到总DataFrame
        combined_df = pd.concat([combined_df, df], ignore_index=True)

# 处理完成后可以查看结果,或者保存到新Excel文件
print(f"所有文件处理完成,合并后总数据行数: {len(combined_df)}")
# 保存合并结果到新文件,index=False避免生成多余的索引列
combined_df.to_excel("合并后的总数据.xlsx", index=False)

优化细节说明

  • 用os.path.join拼接文件路径比直接用+更稳妥,能自动适配不同系统的路径分隔符
  • 加入文件格式过滤,防止误读文件夹里的非Excel文件导致报错
  • 使用pd.concat替代已被弃用的append方法,合并效率更高;ignore_index=True会重置合并后的索引,避免出现重复索引问题
  • 如果你的文件数量特别多,可以先把所有处理好的DataFrame存入一个列表,最后一次性合并,性能会更好:
    # 大文件场景优化版
    df_list = []
    for filename in os.listdir(path):
        if filename.endswith(('.xlsx', '.xls')):
            # 读取和格式化逻辑...
            df_list.append(df)
    combined_df = pd.concat(df_list, ignore_index=True)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 04:42:31