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

Python实现多Excel文件所有工作表合并为单个DataFrame的高效方法

动态读取所有Excel文件及工作表的优化方案

你的问题核心是无法动态适配不同数量的工作表,而且原代码用的append方法效率低(已被pandas弃用),可以通过以下方式改进:

优化思路

  1. 跳过临时文件的同时,只筛选.xls格式的文件(避免误处理其他类型文件)
  2. 对每个Excel文件,通过sheet_names获取所有工作表名称,动态遍历读取
  3. 把所有工作表的DataFrame存入列表,最后用pd.concat一次性合并(比循环append效率高很多)

改进后的代码

import os
import pandas as pd

df_list = []
file_path = "你的文件路径"  # 替换成实际路径

for file_name in os.listdir(file_path):
    # 跳过临时文件和非xls文件
    if '~$' in file_name or not file_name.endswith('.xls'):
        continue
    # 读取Excel文件
    xls = pd.ExcelFile(os.path.join(file_path, file_name))
    # 遍历所有工作表
    for sheet_name in xls.sheet_names:
        sheet_df = xls.parse(sheet_name)
        # 可选:添加列记录来源文件和工作表,方便后续排查
        sheet_df['来源文件'] = file_name
        sheet_df['来源工作表'] = sheet_name
        df_list.append(sheet_df)

# 合并所有DataFrame
final_df = pd.concat(df_list, ignore_index=True)

关键说明

  • xls.sheet_names:自动获取当前Excel文件的所有工作表名称,不管数量多少都能适配
  • pd.concat:一次性合并列表里的所有DataFrame,比循环使用append效率提升明显,而且是pandas推荐的合并方式
  • 可选的来源列:如果后续需要区分数据来自哪个文件/工作表,添加这两列会很实用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 00:45:32