使用索引日期时间从 pandas 数据帧创建 json

Posted

技术标签:

【中文标题】使用索引日期时间从 pandas 数据帧创建 json【英文标题】:Create json from pandas dataframe with index datetime 【发布时间】:2020-10-09 22:43:29 【问题描述】:

在 json 中保存 pandas 数据框时遇到了一些麻烦:

我知道 pandas.DataFrame.to_json 但仍有问题要解决

从此:

import pandas as pd

df = pd.DataFrame([[0, 1], [2, 3]],

                  index=pd.to_datetime(['2020-02-03 02:59:33', '2020-02-06 02:44:33']),

                  columns=['Var1', 'Var2'])

到这里:

Var1=df.columns[0]
Var2=df.columns[1]

dev='mydevice'
json=
        "device":dev,
        "signals":
                      Var1: 
                      "history" : [
                        "value" : 0,"date" : "2020-02-03T02:59:33.000+0000",
                        "value" : 2,"date" : "2020-02-06T02:44:33.000+0000"
                            ],
                      Var2: 
                      "history" : [
                        "value" : 1,"date" : "2020-02-03T02:59:33.000+0000",
                        "value" : 3,"date" : "2020-02-06T02:44:33.000+0000"
                            ]

日期必须以第二种格式输出

所有的时间,我来这里是为了解决对这个问题的任何最终疑问。

【问题讨论】:

【参考方案1】:

您可以使用df.to_dict() 和嵌套循环获得所需的输出。

    signals = 
    for key, val in df.to_dict(orient='dict').items():
        signals[key] = 'history': []
        for k, v in val.items():
            signals[key].get('history').append('value': v, 'date': k.strftime('%Y-%m-%dT%H:%M:%S.000+0000'))
    json_ = "device": 'mydevice',
             "signals": signals

结果:

'device': 'mydevice',
 'signals': 'Var1': 'history': ['date': '2020-02-03T02:59:33.000+0000',
                                   'value': 0,
                                  'date': '2020-02-06T02:44:33.000+0000',
                                   'value': 2],
             'Var2': 'history': ['date': '2020-02-03T02:59:33.000+0000',
                                   'value': 1,
                                  'date': '2020-02-06T02:44:33.000+0000',
                                   'value': 3]

【讨论】:

它非常有效。有一种特殊的方式可以调用这种形式的数据吗? 以前没见过。但这并不意味着什么。那里有很多 JSON 模式。 :) 感谢您的帮助

以上是关于使用索引日期时间从 pandas 数据帧创建 json的主要内容,如果未能解决你的问题,请参考以下文章

使用函数调整 Pandas Dataframes 索引

如何使用分层索引保存和检索 Pandas 数据帧?

Pandas 获取具有复合索引的数据帧的行号

Pandas - 使用 datetimeindex 对数据帧进行排序

Pandas加入(合并?)数据帧,只保留唯一的指标

在几天之内按日期合并2个Pandas数据帧?