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

Python中如何将else分支读取的多文件数据存入同一DataFrame?

解决方案:合并else分支多文件数据到单个DataFrame

没问题呀,完全可以实现你的需求!不过你当前的代码有个小问题:在else分支里,每次循环都会把新读取处理后的DataFrame赋值给TratativaDois,这会覆盖之前的结果,最后你合并的时候只会保留最后一个else分支读取的文件数据,而不是所有的。

修正思路

我们需要先初始化一个空列表,用来存储else分支里每个文件处理后的DataFrame,循环结束后再把这个列表里的所有数据和if分支的结果(如果有的话)合并成一个大的DataFrame。

修改后的代码

import pandas as pd

# 初始化空列表,用来存放else分支的所有处理后数据
tratativa_dois_list = []
tratativa_um = None  # 初始化if分支的结果变量

for idx, folder in enumerate(fileLista):
    if folder == 'filename_for_treatment':
        df1 = pd.read_excel(folder, sheet_name=sheetName[idx], skiprows=1)
        df1.columns = df1.columns.str.strip()
        tratativa_um = df1[[column information to be used]]  # 替换成你的列信息
    else:
        df2 = pd.read_excel(folder, sheet_name=sheetName[idx], skiprows=1)
        df2.columns = df2.columns.str.strip()
        # 把当前文件处理后的DataFrame追加到列表里,而不是覆盖单个变量
        tratativa_dois_list.append(df2[[column information to be use]])  # 替换成你的列信息

# 合并所有数据:先把else分支的列表合并,再加上if分支的结果(如果存在)
frames = []
if tratativa_um is not None:
    frames.append(tratativa_um)
# 合并else分支的所有DataFrame
frames.extend(tratativa_dois_list)

# 最终合并成单个DataFrame
titEmpresa = pd.concat(frames, ignore_index=True)  # ignore_index=True重置索引,避免重复

关键说明

  • 用列表存储多个DataFrame是处理这类多文件合并场景的常规做法,不会丢失中间数据。
  • ignore_index=True参数可以重置合并后DataFrame的索引,避免不同文件的索引重复导致的混乱。
  • 初始化tratativa_um为None是为了处理没有触发if分支的情况(比如没有找到目标文件夹),避免合并时报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:46:43