use*_*388 5 python json pandas
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"
}
]'
Run Code Online (Sandbox Code Playgroud)
使用上面的 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)
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
列表索引必须是整数或切片,而不是 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)
Run Code Online (Sandbox Code Playgroud)
抛出这个错误:
必须通过二维输入。形状={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)
Run Code Online (Sandbox Code Playgroud)
这里没有抛出错误,但是 concat没有将两个 df 对齐。行不同步。
谢谢你的帮助。
| 归档时间: |
|
| 查看次数: |
45 次 |
| 最近记录: |