我想将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。
答案 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)
您丢失的数据现在将用零填充