Python:以pythonic方式向pandas追加/合并dict
我是python新手,我正在尝试附加迭代循环的结果,每次循环中都会给出不同数量的键。。差不多Python:以pythonic方式向pandas追加/合并dict,python,data-binding,pandas,Python,Data Binding,Pandas,我是python新手,我正在尝试附加迭代循环的结果,每次循环中都会给出不同数量的键。。差不多 result i=1 => {key1:a, key2:b} result i=2 => {key2:c, key3:d , key4:z} key1 key2 key3 key4 a b None None None c d z 我希望我的结果是一个数据帧,比如 result i=1 => {key1:a, key2:b
result i=1 => {key1:a, key2:b}
result i=2 => {key2:c, key3:d , key4:z}
key1 key2 key3 key4
a b None None
None c d z
我希望我的结果是一个数据帧,比如
result i=1 => {key1:a, key2:b}
result i=2 => {key2:c, key3:d , key4:z}
key1 key2 key3 key4
a b None None
None c d z
做某事最有效的方法是什么
for i in range(10):
do something
result dict
combine
您可以在循环时将每个dict附加到数据帧:
for i in range(10):
# create dict
df.append( created_dict )
或者创建已创建dict的列表,并将其传递到数据帧构造函数中
df = pd.DataFrame(my_list_of_dicts)
但是,如果您有很多dict,那么添加到列表中会变得昂贵,而第一个代码段会更好。类似的方法可能会奏效:
In [1]: import pandas as pd
In [2]: dic1 = {'key1':'a', 'key2':'b'}
In [3]: dic2 = {'key2':'c', 'key3':'d' , 'key4':'z'}
In [4]: keys = sorted(dic1.viewkeys() | dic2.viewkeys())
In [5]: pd.DataFrame([[d.get(k) for k in keys]
for d in (dic1, dic2)], columns=keys)
Out[5]:
key1 key2 key3 key4
0 a b None None
1 None c d z
我建议您使用排序键,而不是仅使用排序键