Python遍历文件夹读取多份Excel仅能获取最后一份数据如何解决
问题原因
- 现有代码的循环逻辑中,每次读取Excel文件后都将结果赋值给同一个
df变量,前两次读取的内容会被后续写入的值覆盖,循环结束后df仅保留最后一个文件test_3d2.xlsx的数据 - 你没有在代码中定义过名为
test_3d的变量,直接调用该名称必然会触发NameError报错
解决方案
你可以用字典存储所有文件的DataFrame,键设置为文件名(或去掉后缀的简化文件名),值为对应文件读取得到的DataFrame,修改后代码如下:
import matplotlib.pyplot as plt from matplotlib import cm import numpy as np import os import pandas as pd import math folder = r'C:\Users\Denny\Desktop\Work\test_read' files = os.listdir(folder) # 初始化空字典存储所有Excel数据 dfs = {} for file in files: if file.endswith('.xlsx'): # 去掉.xlsx后缀作为字典的键,方便后续调用 file_key = file.removesuffix('.xlsx') dfs[file_key] = pd.read_excel(os.path.join(folder,file), header = None, skiprows=[0,1])
数据调用方式
- 获取
test_3d.xlsx的数据:执行print(dfs['test_3d']) - 获取
test_3d1.xlsx的数据:执行print(dfs['test_3d1']) - 获取
test_3d2.xlsx的数据:执行print(dfs['test_3d2']) - 遍历所有文件的数据可使用如下代码:
for file_name, df in dfs.items(): print(f"====={file_name} 文件数据预览=====") print(df.head())
内容的提问来源于stack exchange,提问作者Denny
相关产品推荐
相关产品推荐

