2015-03-07 8 views
8

Questa domanda è in qualche modo correlata a "Concatenate a large number of HDF5 files".Concatena due file grandi panda. HDFStore HDF5

Ho diversi file HDF5 di grandi dimensioni (circa 20 GB compressi), che non sono adatti alla RAM. Ciascuno di essi memorizza diversi pandas.DataFrame s di formato identico e con indici che non si sovrappongono.

Mi piacerebbe concatenarli per avere un singolo file HDF5 con tutti i DataFram correttamente concatenati. Un modo per farlo è leggere ognuno di essi pezzo per pezzo e quindi salvare in un singolo file, ma in effetti ci vorrebbe un sacco di tempo.

Esistono strumenti o metodi speciali per eseguire questa operazione senza scorrere tra i file?

risposta

11

vedere i documenti here per il progetto odo (ex into). (! Che è stata la motivazione per la modifica del nome, per evitare confusione) Nota se si utilizza la libreria into, quindi l'ordine argomento è stato commutato

si può sostanzialmente fare:

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

fare più operazioni come questo si aggiungerà al negozio rhs.

Questo farà automaticamente le operazioni di blocco per voi.

+1

Impressionante; la prima menzione del mondo reale di Blaze che ho visto in natura. – Veedrac

+0

Quindi Blaze è fantastico. Tuttavia questo funziona stranamente per me. Dopo aver eseguito odo come sopra, alla fine ottengo un gigantesco stack di "file di chiusura" stdout, penso che menzioni tutto il target store, non la fonte. Sembra un bug o mi mancano alcuni passaggi pre/post? – KobeJohn