我如何使用.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和工作表是词典。