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

我正在尝试将 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

                },


我需要的结果如下: 结果


有人可以帮助我吗?


皈依舞
浏览 180回答 1
1回答

Smart猫小萌

你可以重塑你的作品数据: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_normalizeimport 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                 timestamp0  20.010000  34.490002  418.0  ...  961.400024  45.700001  2019-04-10T11:40:13.437Z1  20.040001  34.630001  418.0  ...  960.200012  46.000000  2019-04-10T11:40:03.413Z[2 rows x 8 columns]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python