2016-12-27 4 views
2

Ich möchte mehrere xlsx-Dateien mit unterschiedlichen Strukturen aus einem Verzeichnis laden und diesen anhand des Dateinamens einen eigenen Datenrahmen zuweisen. Ich habe mehr als 30 Dateien mit unterschiedlichen Strukturen, sondern aus Gründen der Kürze beachten Sie bitte die folgenden:Mehrere .xlsx-Dateien aus einem Verzeichnis in separate Pandas-Datenrahmen basierend auf dem Dateinamen lesen

3 Excel-Dateien [wild_animals.xlsx, farm_animals_xlsx, domestic_animals.xlsx]

ich jede mit ihren eigenen Datenrahmen zuweisen möchten also, wenn der Dateiname enthält 'wild', es ist wild_df zugewiesen, wenn farm dann farm_df und wenn inländisch dann dom_df. Dies ist nur der erste Schritt in einem Prozess, da die tatsächlichen Dateien eine Menge "Rauschen" enthalten, das je nach Dateityp gereinigt werden muss. Die Dateinamen ändern sich ebenfalls wöchentlich, wobei nur ein paar Schlüsselmarkierungen gleich bleiben.

Meine Annahme ist das Glob-Modul ist der beste Weg, um dies zu tun, aber in Bezug auf die sehr spezifische Teile der Dateierweiterung und mit diesem zu einem bestimmten df zuzuordnen Ich werde ein bisschen verloren, so dass jede Hilfe geschätzt.

Ich habe vor einer Weile eine ähnliche Frage gestellt, aber es war Teil einer größeren Frage, die ich jetzt größtenteils gelöst habe.

Antwort

2

Ich würde sie in einem Wörterbuch von Datenrahmen des analysieren:

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) 

dann können Sie sie als ein normales Wörterbuch Elemente zuzugreifen:

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

usw.

1

Sie nee alle bekommen xlsx-Dateien, als mit Verständnis dict, können Sie auf alle Ulme

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} 
zugreifen
+0

Dank zu schaffen - das gibt mir, was ich brauchen in Bezug auf ein Wörterbuch von Dateien, aber wenn ich wollte, um einen Datenrahmen namens Wild aus nur Dateien mit dem Namen "wild" zu erstellen und zu erstellen, wie würde ich darüber gehen, was Sie bisher gegeben haben? Nochmals vielen Dank für Ihre Hilfe. – GoodCat

0

Der Vollständigkeit halber zeigen wollte, die Lösung, die ich am Ende mit, ganz in der Nähe Khelili Vorschlag mit ein paar Veränderungen einschließlich meiner bestimmten Code entsprechen keinen Datenrahmen in diesem Stadium

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