使用 Pandas 嵌套 JSON

Posted

技术标签:

【中文标题】使用 Pandas 嵌套 JSON【英文标题】:Nested JSON with Pandas 【发布时间】:2015-08-02 06:42:36 【问题描述】:

我正在尝试从下面的 JSON 文件创建一个数据框。我一直在使用d1 = pd.read_json('user.json'),但这并不是为嵌套值accessToken,facebookId 等创建列。

有没有一种简单的方法可以让 pandas 处理这些嵌套值?

这个问题已经在别处被问过了,但我需要将嵌套值作为列输入到更大的数据框中。


"_id": 11,
"claimToFame": "Send me some tunes...or your GitHub!",
"commentCount": 230,
"coverImage": "img.jpg",
"currentLanguage": "en-GB",
"dateOfBirth": "07/29/1982",
"email": "l@gmail.com",
"facebookDetails":    
        "accessToken": "123",
        "facebookId": "123"
    
,
"facebookId": 1,
"firstName": "David",
"followerCount": 422403,
"following": false,
"followingCount": 253,
"googleDetails": 
    
        "googleId": "111411986454983058357",
        "accessToken": "123"
    

【问题讨论】:

【参考方案1】:

将您的数据放在文件对象FILEOBJECT 中,使用 json 模块将数据加载到 python 结构中

import json
jsondata = json.load(FILEOBJECT)

然后您可以使用 json_normalize 函数创建数据帧

import pandas as pd
usable_dataframe = pd.io.json.json_normalize(jsondata)

在您的情况下,这将导致这些列的数据框:

[_id、claimToFame、commentCount、coverImage、currentLanguage、dateOfBirth、电子邮件、facebookDetails.accessToken、facebookDetails.facebookId、facebookId、firstName、followerCount、following、followingCount、googleDetails.accessToken、googleDetails.googleId]

【讨论】:

【参考方案2】:

这是一种方法:

import pandas as pd
import json

data = json.dumps([
"_id": 11,
"claimToFame": "Send me some tunes...or your GitHub!",
"commentCount": 230,
"coverImage": "img.jpg",
"currentLanguage": "en-GB",
"dateOfBirth": "07/29/1982",
"email": "l@gmail.com",
"facebookDetails":    
        "accessToken": "123",
        "facebookId": "123"
    
,
"facebookId": 1,
"firstName": "David",
"followerCount": 422403,
"following": False,
"followingCount": 253,
"googleDetails": 
    
        "googleId": "111411986454983058357",
        "accessToken": "123"
    
], separators=(',',':'))

pd.read_json(data)

【讨论】:

您好,经过进一步测试后效果很好,但您能帮我做一件事吗?例如 facebookDteails 列现在包含: " "accessToken": "123", "facebookId": "123" " 有没有办法在自己的列中获取 accessToken 和 facebookId?

以上是关于使用 Pandas 嵌套 JSON的主要内容,如果未能解决你的问题,请参考以下文章

使用 Python/Pandas 解析嵌套的 JSON

使用 Pandas 从 URL 读取嵌套 JSON

如何使用 pandas 转换 csv 中的嵌套 json

使用 Pandas 读取嵌套 JSON 的 KeyError

在带有数组的嵌套 Json 上使用 Pandas json_normalize

Pandas:将 DataFrame 与嵌套数组结合或合并 JSON 输出