You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas合并DataFrame内存占用过高致OOM问题求助

Pandas合并三个DataFrame时内存耗尽问题

我尝试用Pandas完成一项看似简单的操作:合并3个DataFrame,但每次都会出现内存耗尽的情况,试过多种方法都无法解决:

  • 试过Polars、R data.table、Dask等其他工具
  • 在第二次合并前手动执行gc.collect()
  • 试过Stack Overflow上的多数方案

数据与操作细节

  • 三个DataFrame均从TSV文件创建,总大小不足2GB,已删除多余列,仅执行简单内连接
  • 创建清理完成后,free -h显示已用内存18GB,剩余40GB
  • 先合并两个最大的DataFrame:
    dfcombined = df1.merge(df2, left_on="key1", right_on="key2", how="inner")
    
    之后执行del df1, df2; gc.collect(),这次合并成功,剩余内存从40GB变为38GB
  • 但合并第三个(最小的)DataFrame时,持续出现OOM错误:
    combine = dfcombined.merge(df3, left_on="key1", right_on="key3", how="inner")
    

数据规模

  • dfcombined形状:(20786437, 32)
  • df3形状:(2370993, 5)

可能的原因猜测

  1. 数据类型:多数列设为字符串类型,可能导致内存占用过高。df3的数据示例如下(所有字段需为字符串,最后一个字段并非数字):
    index key1 field1 field2 field3 field4 field4
    0 "ID1" "A string value" "S" "2" "n/a"
    1 "ID1" "Another string" "R" "1" "7/2"
    2 "ID1" "New string" "R" "1" "7/2"
    3 "ID2" "First string value" "R" "1" "7/2"
    
  2. 多对多连接:dfcombined中有大量相同key的行(比如前74行key1相同),键的大量匹配可能导致合并后数据量激增,但不确定是否会达到占用64GB+内存的程度。

补充信息

与他人交流后确认:dfcombined中有1151147个唯一键,df3中有139162个,OOM错误的原因已基本明确。


内容的提问来源于stack exchange,提问作者jimh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 06:45:34