首页 > 解决方案 > 使用大量 RAM 将 GeoPandas 写入 to_CSV

问题描述

我有一个 ~500Mb 的 csv 文件,我通过 pandas 加载并转换为 geoPandas。

thisData = pd.read_csv(myFile1.csv, encoding='utf-8').fillna(0)
thisData['geometry'] = thisData['geometry'].apply(wkt.loads)
thisData.crs = 'epsg:4326' 

完成后,它会将我计算机内存的 10% 用于 210,134 行和 14 列。数据是整数列或字符串,并且有空单元格。

然后我过滤掉一些数据到 195,209 行。

现在我只想将缩小的文件写入我的驱动器

thisData.to_csv(myFile2.csv, sep=',', encoding='utf-8-sig', index=False, chunksize=10000)    

当我这样做时,内存使用量迅速攀升至 32GB 的 99% 并且永远不会完成。我处理过许多较大的文件,但从未遇到过这个问题,因此该数据的某些功能可能会导致问题。我试着不NaN->0认为这是混合数据类型的问题,但我遇到了同样的问题。

所以现在它只是抛出了MemoryError: Unable to allocate 21.3 GiB for an array with shape (1, 10000) and data type <U572360 ,但显然对于这种大小的数据框来说这不是必需的,更不用说这种大小的块了。

有没有将 geopandas 文件写入 csv 的经验的人对导致这种内存爆炸的原因有任何暗示?

标签: pandascsvgeopandas

解决方案


推荐阅读