Lisez plusieurs files .xlsx à partir d'un directory dans des images de données Pandas distinctes en fonction du nom de file

Je souhaite charger plusieurs files xlsx avec différentes structures à partir d'un directory et atsortingbuer leur propre image de données en fonction du nom de file. J'ai plus de 30 files avec des structures différentes, mais pour une brièveté, veuillez considérer ce qui suit:

3 files excel [wild_animals.xlsx, farm_animals_xlsx, domestic_animals.xlsx]

Je veux atsortingbuer chacun avec leur propre image de données, alors si le nom du file contient 'sauvage', il est affecté à wild_df, si farm puis farm_df et si domestique dom_df. Ce n'est que la première étape d'un process, car les files réels contiennent beaucoup de «bruit» qui doivent être nettoyés en fonction du type de file, etc. Les noms de files changent également sur une base hebdomadaire, avec seulement quelques marqueurs de keys restant les mêmes.

Mon hypothèse est que le module glob est la meilleure façon de commencer à le faire, mais en prenant des parties très spécifiques de l'extension de file et en utilisant cela pour affecter à un df spécifique, je me perds un peu pour que toute aide soit appréciée.

J'ai tout de suite posé une question semblable, mais cela faisait partie d'une question plus large, la plus grande partie que j'ai maintenant résolue.

Je les parsingrais dans un dictionary de 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) 

alors vous pouvez les accéder en tant qu'éléments de dictionary normal:

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

etc.

Vous ne pouvez pas get tous les files xlsx, que l'utilisation de la compréhension dict, vous pouvez accéder à n'importe quel orme

 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} 

Pour l'exhaustivité voulait montrer la solution, j'ai fini par utiliser, très proche de la suggestion de Khelili avec quelques ajustements adaptés à mon code particulier, y compris la création d'un DataFrame à ce stade

 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} ...