Ich habe mehrere (25k) .csv-Dateien, die ich in eine HDFStore-Datei anhängen möchte. Sie alle teilen sich identische Header. Ich verwende den folgenden Code, aber aus irgendeinem Grund wird der Datenrahmen nicht immer mit allen Dateien angehängt, sondern nur mit der letzten Datei in der Liste.Warum überschreibt meine for-Schleife statt anzuhängen?
filenames = [] #list of .csv file paths that I've alredy populated
dtypes= {dict of datatypes}
store = pd.HDFStore('store.h5')
store.put('df', pd.read_csv(filenames[0],dtype=dtypes,parse_dates=
["date"])) #store one data frame
for f in filenames:
try:
temp_csv = pd.DataFrame()
temp_csv = pd.read_csv(f,dtype=dtypes,parse_dates=["trade_date"])
store.append('df', temp_csv)
except:
pass
Ich habe versucht, mit einer Teilmenge der Dateinamen Liste, aber immer den letzten Eintrag zu bekommen. Aus irgendeinem Grund hängt die Schleife meine Datei nicht an, sondern überschreibt sie jedes Mal. Jeder Rat würde geschätzt werden, da dies mich verrückt macht. (Python 3, Fenster)
Wenn Sie es nicht mit 'Pandas' machen müssen, können Sie es mit dem normalen Python' open' Befehl machen. Werfen Sie einen Blick auf diese [link] (http://stackoverflow.com/questions/2363731/append-new-row-to-old-csv-file-python) – cookiedough
Danke für den Vorschlag- ich werde es versuchen . Ich verwende diesen Ansatz, weil die csv-Dateien jeweils etwa 100k Zeilen haben und es 25k davon gibt. Wenn ich es nur mit einem Datenrahmen und nicht mit der hdf-Datei versuchte, stürzte mein Computer ständig ab, weil der Datensatz einfach zu groß war. –
Fangen Sie alle ** außer ** sind selten eine gute Idee. Was versteckt sich ** außer: Pass **? –