2016-11-10 8 views
1

ich einen Ordner mit CSV-Dateien, die Zeitreihen im folgende Format enthalten:Pandas - Konvertieren Wörterbuch zu Datenrahmen - Schlüssel als Spalt

1 0.950861 
2 2.34248 
3 2.56038 
4 3.46226 
... 

ich Zugriff auf diese Textdateien durch Schleifen über den Ordner mit den Dateien und Weitergabe jede Text-Datei in ein Wörterbuch:

data_dict = {textfile: pd.read_csv(textfile, header=3, delim_whitespace=True, index_col=0) for textfile in textfiles} 

ich mag die Spalten fusionieren, die die Daten nebeneinander mit dem Wörterbuchschlüssel als Index (Pathname der Text-Dateien) enthalten. Sie haben alle die gleiche Zeilennummer.

Bisher habe ich versucht, das Wörterbuch auf eine pd.Dataframe wie dies vorbei:

df = pd.DataFrame.from_dict(data_dict, orient='index') 

Eigentlich ist die Ausrichtung muss die Standard ‚Spalten‘ sein, aber es führt zu einem Fehler: Wert Fehler: wenn alle skalare Werte verwenden, müssen Sie einen Index

passieren, wenn ich dies tun, bekomme ich das falsche Ergebnis: Excel_Output

Dies ist, wie ich den Rahmen an Excel übergeben:

writer = pd.ExcelWriter("output.xls") 
df.to_excel(writer,'data', index_label = 'data', merge_cells =False) 
writer.save() 

Ich denke, der Fehler muss das Wörterbuch an den Datenrahmen übergeben werden. Ich habe versucht, pd.concat/merge/append, aber nichts gibt das richtige Ergebnis zurück.

Vielen Dank im Voraus!

Antwort

0

IIUC Sie list comprehension mit concat versuchen:

data_list = [pd.read_csv(textfile, header=3, delim_whitespace=True, index_col=0) 
      for textfile in textfiles] 
print (pd.concat(data_list, axis=1)) 
+0

Ok, das funktioniert perfekt. Mein Fehler war Zeilennummern nicht übereinstimmen. Ich könnte das beheben, indem ich ignore_index = True setze. Der Unterschied zwischen dem Dictionary-Weg und dem Listenverständnis ist: Die Dictionary-Keys fungieren als Spaltenüberschriften, was in meinem Fall sehr nützlich ist. Danke für die Hilfe! –

Verwandte Themen