我使用 pd.pivot_table()方法通过旋转用户项活动数据来创建用户项矩阵。但是,数据帧太大,以至于我这样抱怨:
未堆叠的DataFrame太大,导致 int32溢出
有关解决此问题的任何建议?谢谢!
r_matrix = df.pivot_table(values='rating', index='userId', columns='movieId')
答案 0 :(得分:1)
您可以改用groupby
。尝试以下代码:
reviews.groupby(['userId','movieId'])['rating'].max().unstack()
答案 1 :(得分:0)
库代码内部的整数溢出无济于事。您基本上有三个选择:
您没有提供太多代码,所以我不能告诉您什么是最佳解决方案。
答案 2 :(得分:0)
某些解决方案:
df.groupby('EVENT_ID')['DIAGNOSIS'].apply(list).to_dict()
答案 3 :(得分:0)
如果要将 movieId 作为列,请首先使用movieId作为键对数据框进行排序。
然后将数据帧划分(一半),以便每个子集包含特定电影的所有评分。
subset1 = df[:n]
subset2 = df[n:]
现在,将其应用于每个子集
matrix1 = subset1.pivot_table(values='rating', index='userId', columns='movieId')
matrix2 = subset2.pivot_table(values='rating', index='userId', columns='movieId')
最后使用
连接matrix1和matrix2complete_matrix = matrix1.join(matrix2)
另一方面,如果您要 userId 作为列,请使用userId作为键对数据框进行排序,然后重复上述过程。
***完成操作后,请务必删除subset1,subset2,matrix1和matrix2,否则将出现内存错误。