我有一张字典
[{a:'jeffrey',b:'pineapple',c:'apple'},{a:'epstein',c:'banana'},{a:'didnt kill'},{a:'himself',b:'jebus'}]
我想做的是把这些值转换成一个Pandasdf,但是你可以看到一些dict缺少一些键,因此缺少值,所以我看了一下defaultdict对象,这样我就可以把list对象转换成Pandas实际上能够解释的东西,然后把它转换成一个 Dataframe 。
dd = defaultdict(list)
for d in l:
for k in d.keys():
dd[k]
for d in l:
for k in dd.keys():
try:
dd[k].append(d[k])
except KeyError:
dd[k].append(0)
# Dict auto adaptavél
代码工作,并遵循这些事件的顺序,意味着键为空返回0。但我想知道是否有更好的替代方案或具有更好的o(n)复杂度的代码
预期结果:
defaultdict(<class 'list'>, {'a': ['jeffrey', 'epstein', 'didnt kill', 'himself'], 'b': ['pineapple', 0, 0, 'jebus'], 'c': ['apple', 'banana', 0, 0]})
3条答案
按热度按时间dtcbnfnu1#
您可以使用
DataFrame
构造函数并使用0填充缺失值,然后使用to_dict
方法将 Dataframe 导出为列表的dict:中间结果:
wn9m85ua2#
为什么要使用
defaultdict
?只需使用dict
中的get
方法和默认值:输出:
您也可以为
[a, b, c]
使用其他方法,但是我不能保证知道您所提供的列表中的所有键(不是以一种很好的简短方式)。7vux5j2d3#
我不确定我是否完全理解您的问题,但是给定一个
list_of_dictionaries
,您可以使用pd.Dataframe()
方法将其转换为pandas dataframe
。然后,您可以使用
.fillna()
方法,在缺少键的位置用0
值填充 Dataframe :虽然@B Remmelzwaal的答案也是正确的,但是通过列表和字典迭代列表并不是一个好的做法,尤其是在处理大量数据的时候。