2017-09-13 156 views
1

我想遍历目录并查找特定的xlsx文件,然后将它们分别放入单独的pandas数据框中。这里的事情是我也希望那些excel文件中的所有工作表都在数据框中。使用Python导入 - 将多个excel文件导入数据框

下面是我实现的代码样本,我只需要添加逻辑来拾取所有表:

import pandas as pd 
from glob import glob 

path = 'path_to_file' 

files = glob(path + '/*file*.xlsx') 

get_df = lambda f: pd.read_excel(f) 

dodf = {f: get_df(f) for f in files} 

dodf[files[2]] --- dictionary of dataframes 
+0

我已经创建了一个字典来访问每个数据帧。所以目前的方法应该很好,即在字典中。 –

回答

1

如大熊猫在this answer说明你仍然可以访问ExcelFile类,它加载该文件创建一个对象。

此对象有一个.sheet_names属性,它为您提供当前文件中的图纸名称列表。

xl = pd.ExcelFile('foo.xls') 
xl.sheet_names # list of all sheet names 

要真正处理特定片的进口,进口的Excel文件的对象使用.parse(sheet_name)

xl.parse(sheet_name) # read a specific sheet to DataFrame 

为您的代码是这样的:

get_df = lambda f: pd.ExcelFile(f) 
dodf = {f: get_df(f) for f in files} 

..给你dodf对象的字典ExcelFile

filename = 'yourfilehere.xlsx' 
a_valid_sheet = dodf[filename].sheet_names[0] # First sheet 
df = dodf[filename].parse(sheet_name) 
+0

我不想手动输入文件名。有没有办法从我创建的字典dodf中获取它?我对Python完全陌生,所以我不知道它是如何工作的。 –

+0

是的 - 但你需要你改变你的'pd.read_excel(f)'到'pd.ExcelFile(f)'。一旦完成,每个对象将具有'.sheet_names'属性,该属性是该文件中的表单列表。 – mfitzp

+0

是的,我已经做到了。但是,我必须单独将每个表单解析为数据框? –