Python 难以获取HDF5表数据中的多个列
我是hdf5新手,尝试将数据帧行存储为hdf5格式。我要在文件中的不同位置追加一行;但是,每次我附加它时,它都会显示在单个列中的数组中,而不是显示在多个列中的单个值中 我试过h5py和熊猫,看起来熊猫是更好的选择。此外,我还尝试了很多不同的方法。诚然,任何帮助都将不胜感激 这里是我多次向hdf5文件发送一个数组Python 难以获取HDF5表数据中的多个列,python,pandas,numpy,hdf5,Python,Pandas,Numpy,Hdf5,我是hdf5新手,尝试将数据帧行存储为hdf5格式。我要在文件中的不同位置追加一行;但是,每次我附加它时,它都会显示在单个列中的数组中,而不是显示在多个列中的单个值中 我试过h5py和熊猫,看起来熊猫是更好的选择。此外,我还尝试了很多不同的方法。诚然,任何帮助都将不胜感激 这里是我多次向hdf5文件发送一个数组 作为pd进口熊猫 将numpy作为np导入 数据=np.零((1,48),数据类型=浮点) columnName=['Hello'+str(y)表示(x,y),np.ndenumera
作为pd进口熊猫
将numpy作为np导入
数据=np.零((1,48),数据类型=浮点)
columnName=['Hello'+str(y)表示(x,y),np.ndenumerate(数据)中的项]
df=pd.DataFrame(数据=数据,列=列名)
file=pd.HDFStore('file.hdf5',mode='a',complevel=9,comlib='blosc')
对于范围(0,11)内的x:
file.put('/data',df,column_data=columnName,append=True,format=table')
这似乎很管用:
In [247]: store.put('foo',df,append=True,format='table')
In [248]: store.put('foo',df,append=True,format='table')
In [249]: store.put('foo',df,append=True,format='table')
In [250]: store['foo']
Out[250]:
Hello0 Hello1 Hello2 Hello3 Hello4 ... Hello43 Hello44 Hello45 Hello46 Hello47
0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 0.0
0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 0.0
0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 0.0
[3 rows x 48 columns]
不确定追加和放置之间是否有区别/区别是什么。。。但两者似乎都起作用。此外,它似乎正在创建一个非常大的文件(不是使用此伪代码)。。。关于压缩技术有什么建议吗?h5py似乎更适合创建压缩数据。熊猫似乎生成了很多额外的元数据,或者至少是占用了很多额外空间的东西。。。。有一个为每个组生成的_i_表文件夹。有没有办法摆脱这种情况?数据帧有行和列索引以及其他元数据。但与2d值数组相比,这些值应该很小。M+N vs M*Nyeah由于某种原因,这个“\u i\u tables”在文件中占用了大量空间。它似乎在为生成表的每一列数据收集统计数据,我没有。这个
\u表中有什么?i
代表索引吗?表格
格式(与固定
相反)应该是可追加和可搜索的。这些额外的能力可能是有代价的——无论是在时间上还是在空间上。
In [247]: store.put('foo',df,append=True,format='table')
In [248]: store.put('foo',df,append=True,format='table')
In [249]: store.put('foo',df,append=True,format='table')
In [250]: store['foo']
Out[250]:
Hello0 Hello1 Hello2 Hello3 Hello4 ... Hello43 Hello44 Hello45 Hello46 Hello47
0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 0.0
0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 0.0
0 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 0.0
[3 rows x 48 columns]