如何访问 Python DataFrame 中的嵌套 JSON 对象 [重复]

Posted

技术标签:

【中文标题】如何访问 Python DataFrame 中的嵌套 JSON 对象 [重复]【英文标题】:How to access nested JSON object in Python DataFrame [duplicate] 【发布时间】: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 中的每个对象都有自己的列。

【问题讨论】:

【参考方案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

以上是关于如何访问 Python DataFrame 中的嵌套 JSON 对象 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

猫鼬中的嵌套子模式

使用 arrayFilters 更新 MongoDB 中的嵌套子文档

::slotted CSS 选择器用于 shadowDOM 插槽中的嵌套子级

Polymer 1.0 通配符绑定到数组中的嵌套子属性

python 怎么取dataframe的索引值

如何在 Spark 中使用 Python 查找 DataFrame 中的分区数以及如何在 Spark 中使用 Python 在 DataFrame 中创建分区