【问题标题】:How to access nested JSON object in Python DataFrame [duplicate]如何访问 Python DataFrame 中的嵌套 JSON 对象 [重复]
【发布时间】:2019-09-15 11:53:34
【问题描述】:

我有一个 JSON 响应,我将其转换为 Python 中的 DataFrame。

JSON 响应:

[
  {
    "id": 123456,
    "first_name": "John",
    "last_name": "Doe",
    "fields": [
      {
        "title": "ABC",
        "value": "123"
      },
      {
        "title": "DEF",
        "value": "456"
      }
    ]
  }
]

当我将此 JSON 解析为 DataFrame 时,这些列显示为 id、first_namelast_namefields。其中fields 列包含两个嵌套的 JSON 对象:

[{"title": "ABC","value": "123"},{"title": "DEF","value": "456"}]

如何将fields 中的两个对象拆分为各自的列?

对于上下文,我正在尝试将 DataFrame 的结果打印到 csv 文件,其中fields 中的每个对象都有自己的列。

【问题讨论】:

    标签: python json pandas csv


    【解决方案1】:

    IIUC 我正在使用json_normalize

    from pandas.io.json import json_normalize
    json_normalize(j, 'fields', ['id', 'first_name', 'last_name'])
    Out[1281]: 
      title value last_name first_name      id
    0   ABC   123       Doe       John  123456
    1   DEF   456       Doe       John  123456
    

    数据输入

    j=[
      {
        "id": 123456,
        "first_name": "John",
        "last_name": "Doe",
        "fields": [
          {
            "title": "ABC",
            "value": "123"
          },
          {
            "title": "DEF",
            "value": "456"
          }
        ]
    
      }
    
    ]
    

    【讨论】:

    • 谢谢 - 有什么办法可以在单行上输出吗?比如说,使用title 键作为列标题?
    • @Matt 我不确定你需要什么
    • 这就是我想要实现的目标:ABC DEF last_name first_name id 0 123 456 Doe John 123456
    • 不太清楚如何格式化评论。但基本上我试图将title 键作为列,例如,5 列是idfirst_namelast_nameABCDEF
    猜你喜欢
    • 1970-01-01
    • 2020-08-09
    • 2013-09-10
    • 1970-01-01
    • 1970-01-01
    • 2016-03-04
    • 1970-01-01
    • 1970-01-01
    • 2019-10-09
    相关资源
    最近更新 更多