Python实现多Excel文件所有工作表合并为单个DataFrame的高效方法
动态读取所有Excel文件及工作表的优化方案
你的问题核心是无法动态适配不同数量的工作表,而且原代码用的append方法效率低(已被pandas弃用),可以通过以下方式改进:
优化思路
- 跳过临时文件的同时,只筛选
.xls格式的文件(避免误处理其他类型文件) - 对每个Excel文件,通过
sheet_names获取所有工作表名称,动态遍历读取 - 把所有工作表的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
相关产品推荐
相关产品推荐

