将多个Excel文件导入到多个pd.Series-循环

时间:2019-04-08 20:07:18

标签: python pandas

我正在尝试创建一个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)

相反,似乎我只得到一个仅包含一个excel文件的名为“ i”的数据框。在此先感谢您,我是新手:)

2 个答案:

答案 0 :(得分:0)

我认为您不需要先为路径执行os.getcwd()。 os.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)

OR

dataframe_series = pd.Series(dataframes)

以下内容将创建一个字典,其中的键名为“ excel_file_1”,“ excel_file_2”等。

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

答案 1 :(得分:0)

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

我建议列出一个数据框:

i

现在,您可以访问每个单独的数据帧,调用它们自己的变量dataframes = [] # list of dataframes, empty at the begining for f in files: dataframes.append(pd.read_excel(f)) dataframes[0]dataframes[1] ...