1

我是 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

做某事最有效的方法是什么

for i in range(10):
    do something 
    result dict

combine
4

2 回答 2

1

您可以在循环时将每个 dict 附加到 DataFrame:

for i in range(10):
    # create dict
    df.append( created_dict )

或创建一个已创建字典的列表并将其传递给 DataFrame 构造函数

df = pd.DataFrame(my_list_of_dicts)

但是,如果您有很多 dicts,那么附加到列表将变得昂贵,并且第一个代码片段会更好。

于 2013-10-10T12:34:01.530 回答
1

像这样的东西可能会起作用:

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    

而不是只使用sorted我建议您使用自然排序来对这些键进行排序。

于 2013-10-10T12:49:01.627 回答