将包含 JSON 对象的数据框展开为更大的数据框
Posted
技术标签:
【中文标题】将包含 JSON 对象的数据框展开为更大的数据框【英文标题】:Expand Dataframe containing JSON object into larger dataframe 【发布时间】:2017-11-15 16:22:56 【问题描述】:我在 pandas 中有一个包含两列的数据框。一个是 ID,另一个是长 JSON 对象,对于数据帧中的每个对象都是同一个对象。我的目标是为 JSON 对象中的每个键创建列。
这里是输入示例
ID request_json
175431467 "Rate":"50","Groups":"7 months - 3 years"
我想将此扩展为包含三列的数据框:ID、Rate 和 Groups。
最好的方法是什么?
【问题讨论】:
【参考方案1】:您可以将DataFrame
构造函数与join
或concat
一起使用:
import json
df = df[['ID']].join(pd.DataFrame(df['request_json'].apply(json.loads).values.tolist()))
print (df)
ID Groups Rate
0 175431467 7 months - 3 years 50
或者:
df = pd.concat([df['ID'],
pd.DataFrame(df['request_json'].apply(json.loads).values.tolist())], axis=1)
print (df)
ID Groups Rate
0 175431467 7 months - 3 years 50
【讨论】:
这些都不起作用。对于两者,它只是将 request_json 列重命名为 0。【参考方案2】:In [38]: pd.io.json.json_normalize(df.to_dict('r'))
Out[38]:
ID request_json.Groups request_json.Rate
0 175431467 7 months - 3 years 50
【讨论】:
这不会改变我的数据框 @mangodreamz,您需要将其分配回或分配给另一个变量以上是关于将包含 JSON 对象的数据框展开为更大的数据框的主要内容,如果未能解决你的问题,请参考以下文章