从带有索引日期时间的熊猫数据帧创建JSON

时间:2020-06-19 16:08:45

标签: python json pandas dataframe datetime

我很难在json中保存熊猫数据框:

我知道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 个答案:

答案 0 :(得分:0)

您可以使用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}]}}}