gpt4 book ai didi

python - 在 Pandas 中将外部 json 与嵌套的 json 结合起来并创建新的数据框

转载 作者:行者123 更新时间:2023-12-03 16:30:51 24 4
gpt4 key购买 nike

json_str = '[
{
"name": "t1",
"props": [
{
"abc": 10012,
"def": "OBJECT"
},
{
"abc": 999123,
"def": "SUBJECT"
}
],
"id": 1,
"title": "king"
},
{
"name": "t2",
"props": [
{
"abc": 789456,
"def": "PRODUCT"
}
],
"id": 2,
"title": "queen"
}
]'
使用上面的 JSON,我想创建一个扩展 props 列表并连接到主要 json 列的数据框。
最后,我想在 df 中得到这些列: id,title,name,abc,def与行: 1,king,t1,10012,OBJECT 1,king,t1,999123,SUBJECT 2,queen,t2,789456,PRODUCT当我尝试这个时:
jdata = json.loads(json_str)
pd.concat([pd.DataFrame(jdata), pd.DataFrame(list(jdata['props']))], axis=1).drop('props', 1)
我收到此错误:

list indices must be integers or slices, not str


也试过这个:
jdata=json.loads(json_str)
pd.concat([pd.DataFrame(jdata), pd.DataFrame([pd.json_normalize(jdata, "props", errors="ignore", record_prefix="")])], axis=1).drop('props', 1)
抛出这个错误:

Must pass 2-d input. shape={values.shape}


也试过这个:
result = pd.json_normalize(jdata, 'props', errors="ignore", record_prefix="props.")
result2 = pd.json_normalize(jdata, errors="ignore", record_prefix="tmpl.")
df = pd.concat([result, result2], axis=1).drop('props', 1)
这里没有抛出错误,但是 concat 没有将两个 df 对齐。行不同步。
谢谢你的帮助。

最佳答案

您可以使用 json_normalize 来简化提取;对于每个 record_path 都会有一个关联的 meta :

json_normalize(data = jdata, 
record_path = 'props',
meta = ['name', 'id', 'title']
)

abc def name id title
0 10012 OBJECT t1 1 king
1 999123 SUBJECT t1 1 king
2 789456 PRODUCT t2 2 queen

关于python - 在 Pandas 中将外部 json 与嵌套的 json 结合起来并创建新的数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67188012/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com