我有一个列user_id, movie_id, rating
的熊猫数据框。每行代表用户给出的评分,如下所示
user_id movie_id rating
------------------------------
1 1 3
1 2 3
2 1 1
2 3 2
3 1 1
用户可以为许多电影评分,因此会有多行具有相同的user_id
。
我想将此数据帧转换为numpy数组或数据帧,其中每一行代表唯一的用户,列代表所有电影,其值由该电影的相应用户评分填充。用户未分级的电影将以-1填充。
输出:
user_id 1 2 3
------------------------------
1 3 3 -1
2 1 -1 2
3 1 -1 -1
我可以一次在数据帧上循环一条记录,但是速度很慢。有更好的更快方法吗?
data = np.zeros((ratings.user_id.max(), ratings.movie_id.max()))-1
for i, row in ratings.iterrows():
data[row['user_id']-1,row['movie_id']-1] = row['rating']
here文件u.data
中的数据可用