将多个Excel文件导入多个pd.Series

2024-04-26 07:27:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图创建一个for循环,将多个Excel文件导入多个数据帧

我尝试使用两个变量执行for循环,其中f表示文件的路径i表示从1到len(files)的不同数据帧,因此数据帧将命名为“1”,并包含来自第一个路径的Excel等

path = os.getcwd()
files = os.listdir(path)

for f, i in zip(files, np.arange(len(files))):
    i = pd.read_excel(f)

相反,我似乎只得到一个名为“I”的数据框,其中只包含一个Excel文件


Tags: 文件数据pathin路径forlenos
2条回答

我认为不需要首先对路径执行os.getcwd()。listdir()应该可以正常工作

如果xlsx文件是目录中唯一的内容:

这将创建一个数据帧列表,然后您可以使用pd.concat将它们组合在一起,如果它们是相同的结构

files = os.listdir()

dataframes = []
for file in files:
    dataframes.append(pd.read_excel(file))

combined_dataframes = pd.concat(dataframes, sort=False)

dataframe_series = pd.Series(dataframes)

下面将创建一个字典,其中键名为“excel\u file\u 1”、“excel\u file\u 2”等

dataframes = {}
for i, file in enumerate(files):
    name = 'excel_file_' + str(i+1)
    dataframes[name] = pd.read_excel(file) 

首先,i的作用域仅在for循环内,因此您永远不会使用i从循环中获取数据帧。其次,使用变量i进行循环,然后将数据帧分配给i,然后再次使用i进行循环,再次分配给i,覆盖每个循环中的i;这就是您只获取最后一个excel数据的原因。第三,不能用数字命名对象,这是变量的工作

我建议列出一个数据帧列表:

dataframes = [] # list of dataframes, empty at the begining

for f in files:
    dataframes.append(pd.read_excel(f))

现在您可以访问每个单独的数据帧,调用它自己的变量dataframes[0]dataframes[1]dataframes[2]

相关问题 更多 >