我有一個像
l = [
{'id': 1, 'name': 'a', 'obj2': [{'a': 3, 'b': 6}, {'a':4, 'b': 5}], 'obj': [{'x': 6, 'y': 'p'}, {'x': 10, 'y': 'q', 'z': 'qqq'}]},
{'id': 2, 'name': 'b', 'obj': [{'x': 10, 'y': 'r'}], 'obj2': [{'a': 9, 'i': 's'}]}
]
我想讓它成為一個資料框,如:
id name a i b x y z
1 a 3 6 6 p
1 a 3 6 10 q qqq
1 a 4 5 6 p
1 a 4 5 10 q qqq
2 b 9 s 10 r
在 l 里面,所有的鍵都是一樣的。但是我可能有不同的 l,具有不同的鍵名和不同數量的物件,其中包含 l[0] 中的串列。任何幫助深表感謝。
uj5u.com熱心網友回復:
這是一個完美的用例pd.json_normalize:
l = [{'id': 1, 'name': 'a', 'obj': [{'x': 6, 'y': 'p'}, {'x': 10, 'y': 'q', 'z': 'qqq'}]},
{'id': 2, 'name': 'b', 'obj': [{'x': 10, 'y': 'r'}]}]
df = pd.json_normalize(l, 'obj', ['id', 'name'])
print(df)
# Output:
x y z id name
0 6 p NaN 1 a
1 10 q qqq 1 a
2 10 r NaN 2 b
更新:
我想對具有該結構型別的每個物件使用相同的代碼,但可能 id、name、obj 的命名方式不同
keys = list(l[0].keys())
df = pd.json_normalize(l, keys[-1], keys[:-1])
print(df)
# Output:
x y z id name
0 6 p NaN 1 a
1 10 q qqq 1 a
2 10 r NaN 2 b
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/376087.html
上一篇:無法從api回應決議json
