如何通过目录内文件索引获取pandas读取的对应Excel数据并修复报错
问题修复方案
错误原因
你写的dfs['files[1]']将files[1]包裹在了引号中,相当于要从字典里查找键为字符串"files[1]"的数据,而你构建dfs字典时的键均为不带后缀的文件名,不存在该字符串键,因此触发报错。
修复方案
方案1:直接通过索引关联字典键
你只需先通过索引取出对应文件名,再去掉后缀匹配字典键即可,写法如下:
# 写法1:固定处理5个字符长度的.xlsx后缀 dfs[files[1][:-5]] # 写法2:更通用的后缀处理,适配不同后缀长度 import os dfs[os.path.splitext(files[1])[0]]
方案2:调整存储结构,直接支持索引调用
如果你高频使用索引取数,可直接将dfs改为列表结构,按文件列表顺序存储数据,后续调用更便捷:
import os import pandas as pd folder = r'C:\Users\Denny\Desktop\Work\test_read' # 提前过滤仅保留xlsx文件 files = [f for f in os.listdir(folder) if f.endswith('.xlsx')] files.sort() # 建议添加,保证不同环境下文件顺序稳定 dfs = [] for file in files: dfs.append(pd.read_excel(os.path.join(folder,file), header = None, skiprows=[0], usecols = "B:M")) # 直接通过索引取对应文件的数据 dfs[1]
注意:
os.listdir的返回顺序由操作系统文件系统规则决定,不保证默认按文件名排序,如需固定索引对应关系,一定要对files列表执行排序操作。
内容的提问来源于stack exchange,提问作者Denny
相关产品推荐
相关产品推荐

