【问题标题】:Pandas pivot table int32 overflowPandas 数据透视表 int32 溢出
【发布时间】:2020-03-21 10:20:28
【问题描述】:

我目前正在尝试使用 Pandas 的 pandas.DataFrame.pivot 方法创建数据透视表,但遇到了一些问题。

我拥有的 DataFrame 的形状为 (1300000, 6),因此生成的数据透视表可能会非常大。我得到的具体错误是:

ValueError: Unstacked DataFrame is too big, causing int32 overflow

我想出的一个(失败的)解决方案是将 DataFrame 拆分为较小的 DataFrame,使用这些数据创建数据透视表,然后将这些数据透视表连接起来以创建我想要的原始大型数据透视表。

问题是每个切片的数据透视表的形状都不同,因为我正在调用df.pivot(index='col1', columns='col2')['col3'],并且每列的值会因切片而异。仅供参考,我用前 100 行制作的数据透视表大小为 (62, 63),而我用原始 DataFrame 的前半部分制作的数据透视表给了我错误:

*** MemoryError: Unable to allocate array with shape (13218, 389275) and data type object

有人知道我该如何规避这个问题吗?

如果有人想知道我为什么坚持创建数据透视表,我目前正在与一个团队合作,他们的整个代码都基于假设存在数据透视表。

【问题讨论】:

    标签: python pandas dataframe pivot-table


    【解决方案1】:

    尝试分块读取数据源。

    例如:read_csv 有一个属性:chunksize。

    pandas 文档中的详细信息: https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_csv.html

    【讨论】:

      猜你喜欢
      • 2019-11-09
      • 2021-01-17
      • 1970-01-01
      • 2023-03-23
      • 2012-05-22
      • 2018-03-31
      • 2017-01-09
      • 1970-01-01
      • 2020-05-02
      相关资源
      最近更新 更多