熊猫从单个字典列表构建数据框

时间:2020-10-02 02:41:31

标签: python pandas dictionary

我有一个单字字典:

foo = [
{'A': 'a1'}, {'B': 'b1'},{'C': 'c1'},
 {'A': 'a2'}, {'B': 'b2'}, {'C': 'c2'},
 {'A': 'a3'}, {'B': 'b3'},{'C': 'c3'}
]

我想建立一个这样的DataFrame。

enter image description here

我尝试过这种解决方案,将字典列表分组为一个字典 Combine values of same keys in a list of dicts

bar = {
    k: [d.get(k) for d in foo]
    for k in set().union(*foo)
}

pd.DataFrame(bar)

但是输出效果不好。

enter image description here

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

首先转换为列的字典:

from collections import defaultdict                                                                

bar = defaultdict(list)                                                                            

for dict_ in foo: 
    for key, value in dict_.items(): 
        bar[key].append(value) 

然后变得微不足道:

pd.DataFrame(bar)                                                                                  
# Out 
#     A   B   C
# 0  a1  b1  c1
# 1  a2  b2  c2
# 2  a3  b3  c3

答案 1 :(得分:1)

您可以更改字典理解以过滤缺失值:

bar = {
    k: [d[k] for d in foo if k in d]
    for k in set().union(*foo)
}

编辑:@Marat发布的解决方案也可以使用。