从一个目录中读取多个.xlsx文件到基于文件名的独立Pandas数据框中

我想从一个目录加载多个具有不同结构的xlsx文件,并根据文件名分配这些自己的dataframe。 我有30多个不同结构的文件,但为了简洁,请考虑以下几点:

3个excel文件[wild_animals.xlsx,farm_animals_xlsx,domestic_animals.xlsx]

我想分配每个都有自己的数据框,所以如果文件名包含'野'它被分配到wild_df,如果农场然后farm_df和如果国内然后dom_df。 这只是一个过程中的第一步,因为实际的文件包含大量需要根据文件types进行清理的“噪音”,它们的文件名也会每周更改,只有less数关键标记保持不变。

我的假设是glob模块是开始这样做的最好方法,但是在文件扩展名的非常具体的部分方面,并使用它来分配给一个特定的DF,我变得有点失落,所以任何帮助表示赞赏。

我问了一个类似的问题,但这是我现在解决的大部分问题的一部分。

我将它们parsing成DataFrame的字典:

import os import glob import pandas as pd files = glob.glob('/path/to/*.xlsx') dfs = {} for f in files: dfs[os.path.splitext(os.path.basename(f))[0]] = pd.read_excel(f) 

那么你可以作为一个普通的字典元素访问它们:

 dfs['wild_animals'] dfs['domestic_animals'] 

等等

你需要得到所有的xlsx文件,而不是使用理解词典,你可以访问任何榆树

 import pandas as pd import os import glob path = 'Your_path' extension = 'xlsx' os.chdir(path) result = [i for i in glob.glob('*.{}'.format(extension))] {elm:pd.ExcelFile(elm) for elm in result} 

为了完整性,想显示我最终使用的解决scheme,非常接近Khelili的build议,做了一些调整,以适应我的特定代码,包括在这个阶段不创buildDataFrame

 import os import pandas as pd import openpyxl as excel import glob #setting up path path = 'data_inputs' extension = 'xlsx' os.chdir(path) files = [i for i in glob.glob('*.{}'.format(extension))] #Grouping files - brings multiple files of same type together in a list wild_groups = ([s for s in files if "wild" in s]) domestic_groups = ([s for s in files if "domestic" in s]) #Sets up a dictionary associated with the file groupings to be called in another module file_names = {"WILD":wild_groups, "DOMESTIC":domestic_groups} ...