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
相关产品推荐
相关产品推荐

