将嵌套 JSON 转换为数据框

Posted

技术标签:

【中文标题】将嵌套 JSON 转换为数据框【英文标题】:Convert Nested JSON into Dataframe 【发布时间】:2019-07-08 18:28:04 【问题描述】:

我有一个嵌套的 JSON,如下所示。我想将其转换为熊猫数据框。作为其中的一部分,我还需要只解析权重值。我不需要这个单元。

我还希望将数值从字符串转换为数字。

任何帮助将不胜感激。我对python比较陌生。谢谢。

JSON 示例:

'id': '123', 'name': 'joe', 'weight': 'number': '100', 'unit': 'lbs', 
'gender': 'male'

下面的示例输出:

id     name    weight    gender
123    joe     100       male

【问题讨论】:

【参考方案1】:

使用“ from pandas.io.json import json_normalize”。

id     name    weight.number  weight.unit  gender
123    joe     100              lbs        male

【讨论】:

【参考方案2】:

这样的事情应该可以解决问题:

json_data = ['id': '123', 'name': 'joe', 'weight': 'number': '100', 'unit': 'lbs', 'gender': 'male']
# convert the data to a DataFrame
df = pd.DataFrame.from_records(json_data)
# conver id to an int
df['id'] = df['id'].apply(int)
# get the 'number' field of weight and convert it to an int
df['weight'] = df['weight'].apply(lambda x: int(x['number']))
df

【讨论】:

【参考方案3】:

如果你想丢弃重量单位,只需将 json 展平即可:

temp = 'id': '123', 'name': 'joe', 'weight': 'number': '100', 'unit': 'lbs', 'gender': 'male'
temp['weight'] = temp['weight']['number']

然后把它变成一个数据框:

pd.DataFrame(temp)

【讨论】:

以上是关于将嵌套 JSON 转换为数据框的主要内容,如果未能解决你的问题,请参考以下文章

如何将嵌套的json转换为数据框[重复]

将 pandas 嵌套的 JSON 结构转换为数据框

如何将嵌套的json结构转换为数据框

将多个嵌套 JSON 转换为 Pandas 数据框

如何将熊猫数据框转换为嵌套的 json

Spark 数据框将嵌套的 JSON 转换为单独的列