熊猫数据透视表int32溢出

时间:2019-11-26 03:45:22

标签: python pandas dataframe pivot-table

我目前正在尝试使用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

有人对我如何解决这个问题有任何想法吗?

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

1 个答案:

答案 0 :(得分:0)

尝试分块读取数据源。

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

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