我正在使用HDF5Store在分析之前存储一些处理后的结果。
我要在商店中放入3种类型的结果,


完全未处理的原始结果,只是从原始CSV格式读入并合并
从原始结果中得出的处理结果,这些处理结果具有一定的处理能力,并分为更多的逻辑分组
汇总的结果中添加了有用的总结性列,并删除了多余的列,以便于阅读。


我以为具有层次结构键的HDF5Store可以做到,一个用于Raw,一个用于处理,一个用于摘要。

我想要一个像这样的结构:

<class 'pandas.io.pytables.HDFStore'>
File path: results.h5
/proccessed/dbn_reinit                           frame        (shape->[22880,19])
/proccessed/dbn_rerep_code                       frame        (shape->[11440,18])
/proccessed/dbn_rerep_enhanced_input             frame        (shape->[11440,18])
/proccessed/linear_classifier                    frame        (shape->[572,18])
/proccessed/msda_rerep_code                      frame        (shape->[18304,17])
/proccessed/msda_rerep_enhanced_input            frame        (shape->[18304,17])
/raw/dbn_reinit                                  frame        (shape->[22880,15])
/raw/dbn_rerep                                   frame        (shape->[23452,15])
/raw/msda_rerep                                  frame        (shape->[36608,14])
/summerised/dbn_reinit                           frame        (shape->[22880,10])
/summerised/dbn_rerep_code                       frame        (shape->[11440,9])
/summerised/dbn_rerep_enhanced_input             frame        (shape->[11440,9])
/summerised/linear_classifier                    frame        (shape->[572,6])
/summerised/msda_rerep_code                      frame        (shape->[18304,10])
/summerised/msda_rerep_enhanced_input            frame        (shape->[18304,10])


我希望我可以这样说:

store = pandas.HDF5Store('results.h5')
store.add_group('raw')
raw_store = store['raw']
raw_store['dbn_reinit'] = dbn_reinit_dataframe
raw_store['dbn_rerep_code'] = dbn_rerep_code_dataframe
...


等等

但是,似乎没有一种方法可以获取商店的子组并像使用商店一样使用它,

所以我必须做:

store = pd.HDFStore('results.h5', mode='w')

store['raw/dbn_reinit'] = dbn_reinit_dataframe
store['raw/dbn_rerep'] = dbn_reinit_dataframe
...


这是罗word的,并没有真正将结果分组到3个类别中
我想念什么吗?
或者是HDF的层次特征,
只是写其中包含/的超长键名?

最佳答案

有关使用分层键的文档为here.remove()具有这种类型的功能,您可以在其中删除该级别的节点并进一步向下移动树。

您可以执行以下操作:store.get_storer('foo')返回包含对节点的访问权的对象。 (例如.group)。但是,该对象不允许您添加/选择子节点,也不能提供该节点的良好表示。

您可以在github上对这些功能提出功能请求。请提供您认为应该做的可复制示例。

欢迎提出请求!

我很少使用多个组。主要是因为使用不同文件的灵活性。您可以做自己想做的事情,但我从来没有发现过需要它(例如,将您的小组视为文件本身)。 HDF5不是数据库,因此很少有用

关于python - 如何在HDF5商店中读取/写入子组?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25130511/

10-13 05:47