2015-03-07 23 views
8

Diese Frage bezieht sich auf "Concatenate a large number of HDF5 files".Verketten Sie zwei große pandas.HDFStore HDF5-Dateien

Ich habe mehrere riesige HDF5-Dateien (~ 20GB komprimiert), die nicht in den RAM passen konnte. Jeder von ihnen speichert mehrere pandas.DataFrame s mit identischem Format und mit Indizes, die nicht überlappen.

Ich möchte sie verketten, um eine einzige HDF5-Datei mit allen ordnungsgemäß verketteten DataFrames zu haben. Ein Weg, dies zu tun, ist, jeden von ihnen Stück für Stück zu lesen und dann in einer einzigen Datei zu speichern, aber in der Tat würde es ziemlich viel Zeit in Anspruch nehmen.

Gibt es spezielle Tools oder Methoden, um dies zu tun, ohne Dateien durchlaufen zu müssen?

Antwort

11

siehe Dokument here für das Projekt odo (früher into). (!, Dass die Motivation für die Änderung des Namens war, um Verwechslungen zu vermeiden) Hinweis, wenn Sie die into Bibliothek verwenden, dann ist das Argument, um umgeschaltet wurde

Grundsätzlich können Sie tun:

from odo import odo 
odo('hdfstore://path_store_1::table_name', 
    'hdfstore://path_store_new_name::table_name') 

mehrere Operationen zu tun, wie Dies wird an den rhs Store angehängt.

Dies wird automatisch die Chunk-Operationen für Sie tun.

+1

Ehrfürchtig; Erste echte Erwähnung von Blaze, die ich in freier Wildbahn gesehen habe. – Veedrac

+0

So Blaze ist genial. Aber das funktioniert seltsam für mich. Nach dem Ausführen von Ogo wie oben, bekomme ich schließlich einen riesigen Stapel von stdout "Datei schließen", ich denke, alle Erwähnung der Zielspeicher, nicht die Quelle. Klingt das wie ein Fehler oder fehlen mir einige Pre/Post-Schritte? – KobeJohn

Verwandte Themen