我想遍历一个目录并查找特定的xlsx文件,然后将它们分别放入单独的pandas数据帧中。这里的事情是我还希望这些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)
如Pandas中的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)