字典到DataFrame Pandas:错误:传递了6列,传递的数据有2列。 -python中的while循环

时间:2018-08-08 07:21:55

标签: python python-2.7 pandas dictionary

我想将python字典转换为pandas DataFrame,但是当我这样做时,由于字典值的长度不同:

recomm = pd.DataFrame(recommendation.items(),columns=['id','recId1','recId2','recId3','recId4','recId5'])

我得到:

  

传递了6列,传递的数据有2列

表示所提供的值之一的长度为2。

要纠正它,我做了:

for key in recommendation.keys():
    while True:
        l1 = recommendation[key]
        l1.append(0)
        recommendation[key] = l1
        if len(l1) < 5:
            break

但是在转换为DF时仍然出现错误。

我检查了字典如下:

 for key in recommendation.keys():
    if len(recommendation[key]) != 5:
        print key

,发现长度5的长度也添加了0。表示我现在有一些长度为6的值。 例如字典值:

  

[12899423、12907790、12443129、12558006、12880407、0]

如果列表的长度为 <5。

,如何更正while代码,使其加0。

还有没有更好的方法将字典转换为pandas DataFrame? 字典键为:int和str。

1 个答案:

答案 0 :(得分:0)

您可以使用以下内容:

在python 2.7中使用iteritems()来返回字典上的迭代器,在python 3.x中,items()具有相同的行为

import numpy as np
import pandas as pd
#Your dictionary
d = dict( A = np.array([1,2]), B = np.array([1,2,3,4]) )

df = pd.DataFrame(dict([ (k,pd.Series(v)) for k,v in d.iteritems() ]))

它将用缺失值的NaN值填充数据框,然后只需调用fillna函数:

df.fillna(0,inplace=True)

您丢失的数据现在将用零填充