首页 > 解决方案 > 深度嵌套的 json - Pandas DataFrame 字典中的列表

问题描述

我正在尝试解析嵌套的 json 结果。

data = {
"results": [
        {
            "components": [
                {
                    "times": {
                            "periods": [
                                {
                                    "fromDayOfWeek": 0,
                                    "fromHour": 12,
                                    "fromMinute": 0,
                                    "toDayOfWeek": 4,
                                    "toHour": 21,
                                    "toMinute": 0,
                                    "id": 156589,
                                    "periodId": 20855
                                }
                            ],
                        }
                    }
                ],
            }
        ],
    }

我可以访问并为“结果”和“组件”列表创建数据框,但由于“时间”字典而无法访问“周期”。到目前为止,我有这个:

df = pd.json_normalize(数据,record_path = ['结果','组件'])

需要一个包含列名和值的单独“句点”数据框。非常感谢您对此的帮助。谢谢!

标签: pythonpandas

解决方案


  • 我的结果
  • II 组件
  • 第三次
  • Ⅲ期

规范化应该是正确的方式:

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.json_normalize.html

有 4 级嵌套。结果中可以有 x 个组件,组件中有 y 次 - 但是这种类型的嵌套是过度设计的吗?

获取数据的最简单方法是:

print data['a']['b']['c']['d'] (...)

在你的情况下:

打印数据['results']['components']['times']['periods']


您可以通过这段代码访问特定的嵌套级别:

def GetPropertyFromPeriods (property):
    propertyList = []
    for x in data['results']['components']['times']:
        singleProperty = photoURL['periods'][property]
        propertyList.append(singleProperty)
    return propertyList

这使您可以访问期间内的一个属性(fromDayOfWeek、fromHour、fromMinute)

转换 json 值后,将其转换为 pandas 数据框:

print pd.DataFrame(data, columns=["columnA", "columnB”])

如果卡住:

如何在 Python 中使用来自 JSON 输出的数据创建表

Python - 如何将 JSON 文件转换为数据框

熊猫文档:

  • pandas.DataFrame.from_dict
  • pandas.json_normalize

推荐阅读