我正在使用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/