【问题标题】:Having difficulty getting multiple columns in HDF5 Table Data难以在 HDF5 表数据中获取多列
【发布时间】:2020-01-21 14:36:02
【问题描述】:

我是 hdf5 的新手,正在尝试将 DataFrame 行存储为 hdf5 格式。我要在文件中的不同位置附加一行;但是,每次我附加它时,它都会显示在单个列中的数组中,而不是多个列中的单个值中。

我已经尝试了 h5py 和 pandas,似乎 pandas 是附加的更好选择。此外,我真的尝试了很多不同的方法。真的,任何帮助都将不胜感激。

这是我将一个数组多次发送到 hdf5 文件中。


import pandas as pd
import numpy as np
data = np.zeros((1,48), dtype = float)

columnName = ['Hello'+str(y) for (x,y), item in np.ndenumerate(data)]
df = pd.DataFrame(data = data, columns =columnName)

file = pd.HDFStore('file.hdf5', mode = 'a', complevel = 9, comlib = 'blosc')
for x in range(0,11):
    file.put('/data', df, column_data = columnName , append = True, format = 'table')

【问题讨论】:

    标签: python pandas numpy hdf5


    【解决方案1】:
    In [243]: store = pd.HDFStore('test.h5')                                               
    

    这似乎工作正常:

    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]
    

    【讨论】:

    • 不确定 append 和 put/ 之间是否有区别...但两者似乎都有效。此外,它似乎正在创建一个非常大的文件(不是用这个伪代码)......有没有关于压缩技术的提示?似乎 h5py 更适合创建压缩数据。 Pandas 似乎会生成大量额外的元数据,或者至少会占用大量额外空间。
    • ... 为每个组生成了这个 _i_table 文件夹。有没有办法摆脱这个?
    • 一个数据框有行和列索引,以及其他元数据。但与二维值数组相比,这些应该很小。 M+N 与 M*N
    • 是的,由于某种原因,这个“_i_tables”占用了文件中的大量空间。它似乎在收集每一列数据的统计数据
    • 你已经生成了表格,我还没有。这个_i_table 里有什么? i 是否代表索引? table 格式(相对于fixed)应该是可附加和可搜索的。这些额外的功能可能需要付出代价——无论是时间还是空间。
    猜你喜欢
    • 2015-11-07
    • 2013-04-20
    • 2014-01-13
    • 1970-01-01
    • 2014-05-11
    • 1970-01-01
    • 1970-01-01
    • 2015-04-30
    • 1970-01-01
    相关资源
    最近更新 更多