我几乎在整个互联网上进行了搜索,但不知何故,这些方法似乎都不适用于我的情况。
我有两个大的 csv 文件(每个文件有一百万行以上,大小约为 300-400MB)。他们使用 _readcsv 函数可以很好地加载到数据帧中,而无需使用 chunksize 参数。我什至对这些数据执行了一些小操作,如新列生成、过滤等。
但是,当我尝试合并这两个帧时,我得到一个 MemoryError 。我什至尝试过使用 SQLite 来完成合并,但没有成功。手术需要很长时间。
我的是一台配备 8GB RAM 的 Windows 7 PC。 Python版本为2.7
谢谢你。
编辑:我也尝试过分块方法。当我这样做时,我没有得到 MemoryError,但 RAM 使用量激增并且我的系统崩溃了。
原文由 Ronit Chidara 发布,翻译遵循 CC BY-SA 4.0 许可协议
当您使用 pandas.merge 合并数据时,它将使用 df1 内存、df2 内存和 merge_df 内存。我相信这就是您出现内存错误的原因。您应该将 df2 导出到 csv 文件并使用 chunksize 选项并合并数据。
这可能是更好的方法,但您可以试试这个。 *对于大型数据集,您可以使用 pandas.read_csv 中的 chunksize 选项
这会将合并的数据保存为 df3。