4
我一直在网上搜索很长时间,但无济于事。请帮助或试图给一些想法如何实现这一如何在Python3中将数据帧转换为字典
我用熊猫来读取MovieLens csv文件
ratings = pd.read_table('ml-latest-small/ratings.csv')
然后我得到一个表是这样的:
userId movieId rating timestamp
1 31 2.5 1260759144
1 1029 3.0 1260759179
1 1061 3.0 1260759182
1 1129 2.0 1260759185
1 1172 4.0 1260759205
2 31 3.0 1260759134
2 1111 4.5 1260759256
我想改造它与dict像
{userId:{movieId:rating}}
如
{
1:{31:2.5,1029:3.0,1061,3.0,1129:2.0,1172:4.0},
2:{31:3.0,1111:4.5}
}
我试过这个代码,但没有成功
for user in ratings['userId']:
for movieid in ratings['movieId']:
di_rating.setdefault(user,{})
di_rating[user][movieid]=ratings['rating'][ratings['userId'] == user][ratings['movieId'] == movieid]
有人可以帮我吗?
非常感谢!但似乎'movieId'转换为float类型 – Alfred
您可以投射到'int' - 'd = df.groupby('userId')。apply(lambda:{int(x.movieId):x.rating for i ,x in y.iterrows()})。to_dict()' – jezrael