为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 json_normalize 将 json 转换为数据帧?

如何使用 json_normalize 将 json 转换为数据帧?

皈依舞 2022-01-05 20:30:26
我正在尝试将 api 响应从 json 转换为 Pandas 中的数据帧。我遇到的问题是 de 数据嵌套在 json 格式中,而我的数据框中没有得到正确的列。数据是从具有以下格式的 api 收集的:{    "data": [        {            "timestamp": "2019-04-10T11:40:13.437Z",            "score": 87,            "sensors": [                {                    "comp": "temp",                    "value": 20.010000228881836                },                {                    "comp": "humid",                    "value": 34.4900016784668                },                {                    "comp": "co2",                    "value": 418                },                {                    "comp": "voc",                    "value": 166                },                {                    "comp": "pm25",                    "value": 4                },                {                    "comp": "lux",                    "value": 961.4000244140625                },                {                    "comp": "spl_a",                    "value": 45.70000076293945                }            ],            "indices": [                {                    "comp": "temp",                    "value": -1                },                {                    "comp": "humid",                    "value": -2                },                {                    "comp": "co2",                    "value": 0                },                {                    "comp": "voc",                    "value": 0                },                {                    "comp": "pm25",                    "value": 0                }            ]        },        {            "timestamp": "2019-04-10T11:40:03.413Z",            "score": 87,            "sensors": [                {                    "comp": "temp",                    "value": 20.040000915527344                },                {                    "comp": "humid",                    "value": 34.630001068115234                },我需要的结果如下: 结果有人可以帮助我吗?
查看完整描述

1 回答

?
Smart猫小萌

TA贡献1911条经验 获得超7个赞

你可以重塑你的作品数据:


data = {

    "data": [

        {

            "timestamp": "2019-04-10T11:40:13.437Z",

            "score": 87,

            "sensors": [

                {

                    "comp": "temp",

                    "value": 20.010000228881836

                },

                {

                    "comp": "humid",

                    "value": 34.4900016784668

                },

                {

                    "comp": "co2",

                    "value": 418

                },

                {

                    "comp": "voc",

                    "value": 166

                },

                {

                    "comp": "pm25",

                    "value": 4

                },

                {

                    "comp": "lux",

                    "value": 961.4000244140625

                },

                {

                    "comp": "spl_a",

                    "value": 45.70000076293945

                }

            ],

            "indices": [

                {

                    "comp": "temp",

                    "value": -1

                },

                {

                    "comp": "humid",

                    "value": -2

                },

                {

                    "comp": "co2",

                    "value": 0

                },

                {

                    "comp": "voc",

                    "value": 0

                },

                {

                    "comp": "pm25",

                    "value": 0

                }

            ]

        },

        {

            "timestamp": "2019-04-10T11:40:03.413Z",

            "score": 87,

            "sensors": [

                {

                    "comp": "temp",

                    "value": 20.040000915527344

                },

                {

                    "comp": "humid",

                    "value": 34.630001068115234

                },

                {

                    "comp": "co2",

                    "value": 418

                },

                {

                    "comp": "voc",

                    "value": 169

                },

                {

                    "comp": "pm25",

                    "value": 5

                },

                {

                    "comp": "lux",

                    "value": 960.2000122070312

                },

                {

                    "comp": "spl_a",

                    "value": 46

                }

            ],

            "indices": [

                {

                    "comp": "temp",

                    "value": -1

                },

                {

                    "comp": "humid",

                    "value": -1

                },

                {

                    "comp": "co2",

                    "value": 0

                },

                {

                    "comp": "voc",

                    "value": 0

                },

                {

                    "comp": "pm25",

                    "value": 0

                }

            ]

        }]}



from pandas.io.json import json_normalize

import pandas as pd        


df = pd.DataFrame()

for each in data['data']:

    timestamp = each['timestamp']

    temp_df = json_normalize(data=each, record_path=['sensors']).T


    columns = list(temp_df.iloc[0])

    data_values = list(temp_df.iloc[1,:])


    temp_df = pd.DataFrame([data_values + [timestamp]], columns=columns + ['timestamp'])


    df = df.append(temp_df).reset_index(drop=True)




print(df)

输出:


print(df)

        temp      humid    co2  ...         lux      spl_a                 timestamp

0  20.010000  34.490002  418.0  ...  961.400024  45.700001  2019-04-10T11:40:13.437Z

1  20.040001  34.630001  418.0  ...  960.200012  46.000000  2019-04-10T11:40:03.413Z


[2 rows x 8 columns]


查看完整回答
反对 回复 2022-01-05
  • 1 回答
  • 0 关注
  • 179 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号