我目前正在尝试使用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
有人对我如何解决这个问题有任何想法吗?
万一有人想知道为什么我坚持要创建数据透视表,我目前正在与一个团队合作,他们的整个代码都是基于假设有一个数据透视表可以使用的。
答案 0 :(得分:0)
尝试分块读取数据源。
例如:read_csv具有一个属性:chunksize。
pandas文档中的详细信息: https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_csv.html