我有一个单字字典:
foo = [
{'A': 'a1'}, {'B': 'b1'},{'C': 'c1'},
{'A': 'a2'}, {'B': 'b2'}, {'C': 'c2'},
{'A': 'a3'}, {'B': 'b3'},{'C': 'c3'}
]
我想建立一个这样的DataFrame。
我尝试过这种解决方案,将字典列表分组为一个字典 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)
但是输出效果不好。
有人可以帮忙吗?
答案 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发布的解决方案也可以使用。