将一对一映射的熊猫数据框转换为一对多

时间:2019-05-20 08:37:00

标签: python pandas

我有一个列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中的数据可用

0 个答案:

没有答案