【问题标题】:Convert a csv dataset into HDF5 for nilmtk将 csv 数据集转换为 HDF5 用于 nilmtk
【发布时间】:2018-11-19 16:01:10
【问题描述】:

我最近正在研究nilmtk 项目。我能够安装它的工具包并运行它的示例。但是当我尝试将我的数据集转换为 HDF5 中的Dataset metadatarequired 时,我遇到了困难。

我不熟悉如何处理 HDF5 格式,但发现它可以导入任何内容并且需要属性。我想我必须为 HDF5 树(节点、叶子、文件夹)中的每个项目创建属性。

但最让我苦恼的是redd.h5示例数据集格式:

import pandas as pd 
import h5py
redd = pd.HDFStore('redd.h5')
redd.keys()
redd['/building6/elec/meter1']


Out[92]: 
physical_quantity              power
type                        apparent
2011-05-21 15:39:19-04:00  47.000000
2011-05-21 15:39:21-04:00  46.919998
2011-05-21 15:39:22-04:00  47.020000
...

“type”在“physical_quantity”下,“apparent”在“power”下,如 MeterDevice 在document 中所述 如何在 python 中创建这种类型的(两行标签)表?

我的设备数量数据已经准备好从 Fluke Analyze 中提取。此时,我只想用 nilmtk 工具包运行我自己的数据集。希望有人可以指导我。

【问题讨论】:

    标签: python hdf5


    【解决方案1】:

    您看到的两行标签是Pandas MultiIndex。在这种特殊情况下,DataFrame 的列是一个 MultiIndex,这基本上意味着存在具有多个级别的列标签的层次结构。

    您可以使用这样的多级列标签制作自己的 DataFrame:

    cols = pd.MultiIndex.from_tuples(
        [('physical_quantity', 'type'), ('power', 'apparent')])
    df = pd.DataFrame([[1,2],[3,4]], columns=cols)
    

    【讨论】:

    • 感谢您的快速回复。我想知道这种列标签层次结构是否独立于 HDF5 格式。只是想知道......一个快速的问题。如何将索引设置为第一列('physical_quantity','type')? preprocess.set_index('physical_quantity', 'type') 似乎不起作用。
    • @Simon:说实话,我不确定。如果您需要帮助,您可能想提出一个新问题。或者拿你有的 DataFrame,检查它的 indexcolumns 找出答案。
    猜你喜欢
    • 2015-11-28
    • 2019-08-07
    • 2015-01-27
    • 2014-03-07
    • 2016-12-13
    • 2013-10-26
    • 2014-07-08
    • 2014-06-13
    • 1970-01-01
    相关资源
    最近更新 更多