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

如何用Pandas单循环读取多目录Excel并生成唯一DataFrame

多目录Excel文件合并实现方案

问题描述

我有四个目录,需要读取其中所有Excel文件,执行一些转换后最终合并为一个DataFrame。目前已编写代码读取C:\Users\A目录下的文件并完成初步转换:

os.chdir(r'C:\Users\A')
allFiles = glob.glob("*.xlsx") # match your excels
li = []
for file in allFiles:
    df = pd.read_excel(file)
    li.append(df)
frame_A = pd.concat(li, axis=0, ignore_index=True)
frame_A.to_excel(r'C:\Users\A\A.xlsx',index=None)

现在我还需要读取C:\Users\B等目录的Excel文件,生成frame_B这类唯一命名的DataFrame,最终合并所有DataFrame。请问如何仅用一个循环实现该需求?

解决方案

你可以把所有要处理的目录放进一个列表,用循环遍历每个目录,同时用字典来存每个目录对应的DataFrame——这样既能自动生成frame_A、frame_B这类唯一命名的变量,又能一次性完成所有目录的读取、合并,最后再把所有DataFrame合并到一起。

直接上代码:

import os
import glob
import pandas as pd

# 把所有需要处理的目录都列在这里
target_dirs = [r'C:\Users\A', r'C:\Users\B', r'C:\Users\C', r'C:\Users\D']
# 用字典存每个目录的合并结果,键就是frame_A、frame_B这类名字
dir_frames = {}

for dir_path in target_dirs:
    # 自动提取目录名,比如从C:\Users\A里拿到A
    dir_name = os.path.basename(dir_path)
    os.chdir(dir_path)
    # 获取当前目录下所有xlsx文件
    all_files = glob.glob("*.xlsx")
    
    li = []
    for file in all_files:
        df = pd.read_excel(file)
        # 这里可以加你需要的转换操作,比如清洗数据、新增列之类的
        li.append(df)
    
    # 合并当前目录的所有Excel文件
    current_frame = pd.concat(li, axis=0, ignore_index=True)
    # 把结果存入字典,键名就是frame_目录名
    dir_frames[f'frame_{dir_name}'] = current_frame
    # 保存当前目录的合并文件(可选操作,不需要可以删掉)
    current_frame.to_excel(os.path.join(dir_path, f'{dir_name}.xlsx'), index=None)

# 最后合并所有目录的DataFrame成最终的总表
final_merged_frame = pd.concat(dir_frames.values(), axis=0, ignore_index=True)
# 可选:保存最终合并结果
# final_merged_frame.to_excel(r'C:\Users\final_merged.xlsx', index=None)

逻辑说明

  • 用target_dirs统一管理所有目录,后续要加目录或者改路径,直接改这个列表就行,不用动循环逻辑。
  • 字典dir_frames用来存每个目录的合并结果,自动生成frame_A、frame_B这样的键名,既满足你要的唯一命名需求,之后要单独调用某个目录的结果也方便(比如dir_frames['frame_A']就能拿到A目录的合并表)。
  • 循环里复用了你原来的读取、合并逻辑,只是把固定路径换成了循环变量,不用重复写多段几乎一样的代码。
  • 最后一行pd.concat(dir_frames.values())直接把所有目录的DataFrame合并成一个,一步到位。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 09:40:28