首页 > 解决方案 > 如何在 pandas / pytables 中设置 hdf5 组的属性?

问题描述

我正在构建一个 hdf5 文件,其中包含不同的测量数据集。对于实验和每次测量,我都有一些我想加入的元数据。

我的元数据包含关于我的样本、我的设置、测试过程等的信息,因此我希望将其结构化为嵌套字典。由于 HDF5 文件格式无法在属性中存储字典(而且我发现将元数据放入不干净的数据集中的替代方法),我决定使用 pyTables 而不是 h5py,因为它有自己的语法来存储/解析字典作为 hdf5 属性中的字符串/来自 hdf5 属性的字符串。

我构建了一个具有以下结构的文件

'G1'
    'M1'
    'M2'

我可以通过以下方式存储每个测量的元数据:

store = pd.HDFStore(myHdfFile)
store.get_storer('G1/M1').attrs.myMetadataKey = myDict

但我不能在我的父 hdf-group / pyTable 节点上做同样的事情。我尝试了以下方法:

store.get_storer('G1').attrs.myMetadataKey = myDict

store.get_node('G1').attrs.myMetadataKey = myDict

但它们都不起作用。那么如何设置hdf5组的hdf-attribute呢?

标签: pythonattributesmetadatahdf5pytables

解决方案


如果在 pyTables 教程中找到答案:

与 hdf5-datasets / pyTable 叶不同,必须使用 ._v_attrs 而不是 attrs

store.get_node('G1')._v_attrs.myMetadataKey = myDict

将元数据写入组的属性中,反之将其读出。如果你写的话,字符串到字典的解析是自动的

myDict = store.get_node('G1')._v_attrs.myMetadataKey

您还可以通过这种方式更改预定义的组属性,例如标题。只需使用“TITLE”作为“myMetadataKey”。


推荐阅读