熊猫:int32溢出?无法构建数据透视表



i使用 pd.pivot_table((方法来创建用户信息矩阵,通过旋转用户项目活动数据来创建用户信息矩阵。但是,数据框是如此之大,以至于我这样抱怨:

未堆放的数据框太大,导致 int32溢出

关于解决此问题的任何建议?谢谢!

r_matrix = df.pivot_table(values='rating', index='userId', columns='movieId')

一些解决方案:

  • 您可以将熊猫版本降级到0.21,这对于具有大尺寸数据的枢轴表不问题。
  • 您可以将数据设置为字典格式,例如df.groupby('EVENT_ID')['DIAGNOSIS'].apply(list).to_dict()

您可以改用groupby。尝试此代码:

reviews.groupby(['userId','movieId'])['rating'].max().unstack()

库中的整数溢出您无能为力。您基本上有三个选项:

  1. 更改输入数据您提供给库,以免发生溢出。从某种意义上说,您可能需要使输入较小。如果没有帮助,您可能会以错误的方式使用图书馆或击中库中的错误。
  2. 使用不同的库(或根本没有(;看来您使用的库不是打算在大输入上运行的。
  3. 修改库的代码本身,以便它可以处理您的输入。这可能很难做到,但是如果您向图书馆源代码提交拉动请求,许多人会从中获利。

您不提供太多代码,所以我无法说出最适合您的解决方案。

如果您想要 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和Matrix2使用

complete_matrix = matrix1.join(matrix2)

另一方面,如果您想要用户ID 作为列,请使用用户ID作为密钥对数据框进行排序,然后重复上述过程。

***请务必删除子集群,subset2,matrix1&完成后Matrix2或最终会出现内存错误。

转换值列应该解决您的问题:

df ['ratings'] = df ['评级']。astype('int64’(

相关内容

  • 没有找到相关文章

最新更新