使用 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的主要内容,如果未能解决你的问题,请参考以下文章
使用 Pandas 读取嵌套 JSON 的 KeyError