[英]How to flatten a list of list of dicts in pandas?
I have an object like我有一个 object 之类的
[
{id: 1, name: "a", obj: [{x:6, y:"p"}, {x:10,y:"q",z:"qqq"}]},
{id: 2, name: "b", obj: [{x:10, y:"r"}]}
]
and I want to make it a dataframe like:我想把它变成一个 dataframe 像:
id name x y z
1 a 6 p
1 a 10 q qqq
2 b 10 r
Any help is much appreciated.任何帮助深表感谢。
This is a perfect use case for pd.json_normalize
:这是
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
Udpate :更新:
I want to use the same code for every object that has that structure type, but maybe the id,name,obj will be named differently
我想对每个具有该结构类型的 object 使用相同的代码,但可能 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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.