【发布时间】:2016-01-14 10:36:10
【问题描述】:
我有一个字典形式的字典:
{'user':{movie:rating} }
例如,
{Jill': {'Avenger: Age of Ultron': 7.0,
'Django Unchained': 6.5,
'Gone Girl': 9.0,
'Kill the Messenger': 8.0}
'Toby': {'Avenger: Age of Ultron': 8.5,
'Django Unchained': 9.0,
'Zoolander': 2.0}}
我想将这个字典转换成一个熊猫数据框,第 1 列是用户名,其他列是电影评级,即
user Gone_Girl Horrible_Bosses_2 Django_Unchained Zoolander etc. \
但是,一些用户没有对电影评分,因此这些电影不包含在该用户 key() 的 values() 中。在这些情况下,最好只用 NaN 填充条目。
到目前为止,我遍历键,填充一个列表,然后使用这个列表创建一个数据框:
data=[]
for i,key in enumerate(movie_user_preferences.keys() ):
try:
data.append((key
,movie_user_preferences[key]['Gone Girl']
,movie_user_preferences[key]['Horrible Bosses 2']
,movie_user_preferences[key]['Django Unchained']
,movie_user_preferences[key]['Zoolander']
,movie_user_preferences[key]['Avenger: Age of Ultron']
,movie_user_preferences[key]['Kill the Messenger']))
# if no entry, skip
except:
pass
df=pd.DataFrame(data=data,columns=['user','Gone_Girl','Horrible_Bosses_2','Django_Unchained','Zoolander','Avenger_Age_of_Ultron','Kill_the_Messenger'])
但这只会给我一个数据框,其中包含对集合中所有电影进行评分的用户。
我的目标是通过遍历电影标签(而不是上面显示的蛮力方法)来附加到数据列表,其次,创建一个包含所有用户的数据框,并将空值放置在不包含的元素中有电影收视率。
【问题讨论】:
标签: dictionary pandas dataframe