首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用HDF5Store读取/写入子组?

如何使用HDF5Store读取/写入子组?
EN

Stack Overflow用户
提问于 2014-08-05 02:58:38
回答 1查看 621关注 0票数 1

在进行分析之前,我使用HDF5Store存储一些处理过的结果。我想在商店里放三种结果,

  • 未处理的原始结果,只需读取并与原来的CSV格式合并即可。
  • 从原始结果派生出来的经过处理的结果,这些结果有一些处理和划分为更逻辑的分组。
  • 摘要的结果,有有用的总结列添加和删除冗余列,以便于阅读。

我认为一个具有等级密钥的HDF5Store可以做到这一点,一个用于原始数据,一个用于处理,另一个用于汇总。

我想要一个这样的结构:

代码语言:javascript
复制
<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])

我本以为我可以通过说:

代码语言:javascript
复制
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
...

然而,似乎并没有一种方法来获得一个商店的一个分组,并使用它,因为它是一个商店,

所以我不得不:

代码语言:javascript
复制
store = pd.HDFStore('results.h5', mode='w')

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

这是冗长的,并没有真正显示出任何一种分组的结果到三个猫,我是不是遗漏了什么?或者是HDF的分层特性,仅仅是写包含/的长键名称呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-05 10:33:57

使用层次键的文档是这里.remove()具有这种类型的功能,您可以在该级别并在树下删除节点。

您可以这样做:store.get_storer('foo')返回包含对节点的访问的对象。(如.group)。但是,这个对象不允许您添加/选择子节点,也不允许它提供该节点的良好响应。

您可以在github上输入这些特性的功能请求。请包括一个可复制的例子,你认为这应该做什么。

拉-请求是欢迎!

我很少使用多个组。主要是因为使用不同文件的灵活性。你可以做你想做的事情,我只是从来没有发现它的必要性(例如,把你的组当作文件本身)。HDF5不是一个数据库,所以这很少有用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25130511

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档