【问题标题】:How do I set the attribute of a hdf5 group in pandas / pytables?如何在 pandas/pytables 中设置 hdf5 组的属性?
【发布时间】:2021-12-04 13:22:07
【问题描述】:

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

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

【问题讨论】:

    标签: python attributes metadata hdf5 pytables


    【解决方案1】:

    如果在 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”即可。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-03
      • 2013-12-01
      • 1970-01-01
      • 2016-11-22
      • 1970-01-01
      • 2015-10-21
      • 2021-03-27
      • 2020-12-04
      相关资源
      最近更新 更多