如何用Pandas批量处理目录下Excel文件并合并?
批量处理Excel文件并合并的解决方案
1. 封装处理逻辑为函数
先把你对单个Excel的处理步骤封装成函数,方便批量复用:
import pandas as pd import glob def process_single_excel(file_path): # 读取Excel文件,根据实际情况调整sheet_name、header等参数 df = pd.read_excel(file_path) # 执行你的核心处理步骤 df = df.T df.columns = df.iloc[0] df = df.loc[3:8] # 注意:多列选取需要双层方括号,原代码写法会报错 df = df[['col2', 'col8', 'col10']] # 重置索引避免合并后索引混乱 df = df.reset_index(drop=True) return df
2. 批量获取目标文件路径
用glob精准匹配目录下的所有Excel文件,替换成你的实际目录路径和文件后缀:
# 匹配指定目录下的所有xlsx文件,如需匹配xls则改成*.xls file_paths = glob.glob('./your_target_folder/*.xlsx')
可以先打印len(file_paths)确认是否获取到了所有文件,避免路径写错导致空列表。
3. 批量处理并收集结果
遍历所有文件,调用处理函数,把成功处理后的DataFrame存入列表:
processed_dataframes = [] for path in file_paths: try: processed_df = process_single_excel(path) processed_dataframes.append(processed_df) print(f"已处理:{path}") except Exception as e: # 捕获错误并跳过异常文件,避免整个流程中断 print(f"处理文件{path}失败:{str(e)}") continue
4. 合并所有结果
用pd.concat替代已弃用的append方法,高效合并所有DataFrame:
# ignore_index=True 重置合并后的索引,避免重复索引问题 final_merged_df = pd.concat(processed_dataframes, ignore_index=True) # 将合并结果保存为Excel文件 final_merged_df.to_excel('./merged_final_result.xlsx', index=False)
注意事项
- 如果你的Excel文件有指定工作表,记得在
pd.read_excel中添加sheet_name参数(比如sheet_name='Sheet1') - 若存在文件损坏、列名不一致等情况,可在
try-except块中添加更细致的错误处理(比如记录错误日志) - 针对数千个文件的场景,
pd.concat的效率远高于循环append,也可以根据内存情况分批合并
内容的提问来源于stack exchange,提问作者omirz
相关产品推荐
相关产品推荐

