我如何使用.xls文件夹和一系列variables名称自动创buildPandas数据框?

我有一个文件夹的文件数量。 我想导入工作表'sheet1'作为一个pandas数据框为他们每个人,分配给该名称的一部分的名称。

我已经成功地获得了一个文件名列表:

path = "/Users/path" files = os.listdir(path) files_xls = [f for f in files if f[-3:] == 'xls'] 

['A.xls','B.xls']

我已经成功地创build了一个我希望作为数据框名称的名称列表:

 names = map(lambda each:each.strip(".xls"), files_xls) 

['A','B']

但是我没有使用这些名称导入。 我可以手动做到这一点:

 A = pd.read_excel(A.xls, 'sheet1') B = pd.read_excel(B.xls, 'sheet1') etc... 

但我不知道如何自动化这个过程。

使用.zip将两个lists合并为一个dict ,使用.items()迭代结果并在dict收集pd.read_excel()

 df = {} for name, f in dict(zip(names, files_xls)).items(): df[name] = pd.read_excel(f, 'sheet1') 

df['A']将包含pd.read_excel('A.xls')

您可以使用以下方法简化创build名称list

 names = [f[:-4] for f in files_xls] 

这工作如下:

 files_xls = ['A.xls', 'B.xls'] names = [f[:-4] for f in files_xls] ['A', 'B'] name_dict = dict(zip(names, files_xls)) {'A': 'A.xls', 'B': 'B.xls'} for name, f in name_dict.items(): print(name, f) 

打印:

 A A.xls B B.xls 

有两个选项可以为你工作:

1。

 for name in names: xlsx[name] = pd.ExcelFile('PATH\' + name + '.xlsx') sheets[name] = xlsx.parse(0) 

2。

 for name in names: xlsx[name] = pd.read_excel(open('PATH\' + name + '.xlsx','rb'), sheetname='Sheet1') 

请注意,xlsx和工作表是词典。