繁体   English   中英

使用列表转换 json dict

[英]Convert json dict with lists

我从 url 中提取了 JSON 数据。 结果是一本字典。 如何转换此字典,使指标是一列,时间是每个值的索引

提前致谢

{
    "metricData": {
        "metrics": ["AdrActCnt", "BlkCnt", "BlkSizeByte"],
        "series": [
            {
                "time": "2021-01-28T00:00:00.000Z",
                "values": ["1097896.0", "145.0", "190568423.0"]
            },
            {
                "time": "2021-01-29T00:00:00.000Z",
                "values": ["1208741.0", "152.0", "199725189.0"]
            },
            {
                "time": "2021-01-30T00:00:00.000Z",
                "values": ["1087755.0", "136.0", "177349536.0"]
            }
        ]
    }
}

time------------------------AdrActCnt-----BlkCnt------BlkSizeByte
    
2021-01-28T00:00:00.000Z----1097896.0-----145.0-------190568423.0
2021-01-29T00:00:00.000Z----1208741.0-----152.0-------199725189.0
2021-01-29T00:00:00.000Z----1087755.0-----136.0-------177349536.0

我希望您希望最终结果为 pandas dataframe。 下一个代码实现了这一点。 另外我希望您的数据已经从 JSON 解析为 Python 字典格式,如果不只是做data = json.loads(json_text)

在线尝试!

def to_df(data):
    import pandas as pd
    df = pd.DataFrame(
        data = [
            [e['time']] + [(float(e2) if e2 is not None else e2) for e2 in e['values']]
            for e in data['metricData']['series']
        ],
        columns = ['time'] + data['metricData']['metrics'],
    ).set_index('time')
    df.index = pd.to_datetime(df.index)
    return df

data = {
    "metricData": {
        "metrics": ["AdrActCnt", "BlkCnt", "BlkSizeByte"],
        "series": [
            {
                "time": "2021-01-28T00:00:00.000Z",
                "values": ["1097896.0", "145.0", "190568423.0"]
            },
            {
                "time": "2021-01-29T00:00:00.000Z",
                "values": ["1208741.0", "152.0", "199725189.0"]
            },
            {
                "time": "2021-01-30T00:00:00.000Z",
                "values": ["1087755.0", "136.0", "177349536.0"]
            }
        ]
    }
}

print(to_df(data))

Output:

                           AdrActCnt  BlkCnt  BlkSizeByte
time
2021-01-28 00:00:00+00:00  1097896.0   145.0  190568423.0
2021-01-29 00:00:00+00:00  1208741.0   152.0  199725189.0
2021-01-30 00:00:00+00:00  1087755.0   136.0  177349536.0

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM