2016-07-09 17 views
3
odo Kombination

I aa Reihe von großen (13GB + groß) h5-Dateien, die jeweils h5-Datei hat zwei Datensätze, die mit Pandas erstellt wurden:riesige h5-Dateien mit mehreren Datensätzen in einer mit

df.to_hdf('name_of_file_to_save', 'key_1',table=True) 
df.to_hdf('name_of_file_to_save', 'key_2', table=True) # saved to the same h5 file as above 

Ich habe gesehen ein Beitrag hier:

Concatenate two big pandas.HDFStore HDF5 files

auf odo mit h5-Dateien verketten. Was ich tun möchte, ist für jede h5-Datei, die key_1 und erstellt wurde, kombinieren Sie sie so, dass alle key_1 Daten sind in einem Datensatz in der neuen h5-Datei und alle key_2 sind in einem anderen Datensatz in der gleichen neue h5-Datei. Alle key_1 haben die gleiche Anzahl von Spalten, das gleiche gilt für key_2

ich das versucht habe:

from odo import odo 
files = ['file1.h5','file2.h5','file3.h5','file4.h5'] 
for i in files: 
    odo('hdfstore://path_to_here_h5_files_live/%s::key_1' % i, 
     'hdfstore://path_store_new_large_h5::key_1') 

Howeever ich einen Fehler:

(tables/hdf5extension.c:7824) 
tables.exceptions.HDF5ExtError: HDF5 error back trace 

File "H5A.c", line 259, in H5Acreate2 
    unable to create attribute 
File "H5Aint.c", line 275, in H5A_create 
    unable to create attribute in object header 
File "H5Oattribute.c", line 347, in H5O_attr_create 
    unable to create new attribute in header 
File "H5Omessage.c", line 224, in H5O_msg_append_real 
    unable to create new message 
File "H5Omessage.c", line 1945, in H5O_msg_alloc 
    unable to allocate space for message 
File "H5Oalloc.c", line 1142, in H5O_alloc 
    object header message is too large 

End of HDF5 error back trace 

Can't set attribute 'non_index_axes' in node: 
/key_1 (Group) ''. 
Closing remaining open 

Antwort

3

Für diesen speziellen Fall es Es ging darum, zu viele Spalten zu haben, die die für diese Information zugewiesene Speichergrenze überschritten. Die Lösung besteht darin, den Datenrahmen zu laden und zu transponieren.