简体   繁体   English

如何展平 pandas 中的字典列表?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM