如何通过循环将每个文件存入不同DataFrame以简化批量文件处理流程
可行实现方案
推荐使用字典存储不同文件对应的DataFrame,无需提前定义变量名,后续新增文件不需要调整核心逻辑,能最大程度简化处理流程,示例代码如下:
import pandas as pd import os # 配置文件存储目录 inPath = "替换为你的文件所在目录路径/" # 筛选目录下所有xlsx文件,可按自己的命名规则调整筛选条件 filelist = [f for f in os.listdir(inPath) if f.endswith(".xlsx")] # 初始化字典,key为自定义的DataFrame名称,value为读取后的DataFrame对象 df_container = {} for file in filelist: full_file_path = os.path.join(inPath, file) # 以去掉后缀的文件名作为字典key,也可自定义命名规则 df_name = file.rsplit(".", 1)[0] df_container[df_name] = pd.read_excel(full_file_path, sheet_name=0, dtype="object")
后续需要调用某一个文件的DataFrame时,直接用df_container["对应的文件名"]即可,也可以直接遍历字典做批量处理。
如果确实需要生成独立的变量名存储DataFrame,可以用globals()动态生成变量,示例如下:
import pandas as pd import os inPath = "替换为你的文件所在目录路径/" filelist = [f for f in os.listdir(inPath) if f.endswith(".xlsx")] # 按顺序定义要生成的变量名,注意这里要写字符串格式 OUT_FILE = ["a", "b"] for idx, file in enumerate(filelist): full_file_path = os.path.join(inPath, file) globals()[OUT_FILE[idx]] = pd.read_excel(full_file_path, sheet_name=0, dtype="object")
原有代码错误说明
- 缩进错误:for循环行前有多余空格,Python对缩进语法要求严格
pd.read_excel参数传递错误:第二个参数为工作表名(sheet_name),不能直接作为赋值的变量名使用,原有写法逻辑完全错误- 变量未定义:
OUT_FILE=[a,b]中的a、b如果未提前定义,会直接抛出变量未声明错误 - 路径写死:循环中固定读取
inPath+"xxx.xlsx",不会遍历读取filelist中的不同文件 - 手动维护计数变量冗余:可以用
enumerate直接获取循环下标,不需要手动累加计数
内容的提问来源于stack exchange,提问作者Sinner Lee
相关产品推荐
相关产品推荐

