首页 > 解决方案 > 删除数据框但仍然丢失内存

问题描述

我有两个名为 df0(1.2 亿 obs)和 df1(5000 万 obs)的大型数据框。它们具有相同的 44 个变量(作为列)。我需要附加数据,以便新数据框有 120+50 = 1.7 亿个观察值和 44 列。

我用:

frames = [df0, df1]
df = pd.concat(frames, ignore_index=True)

or
df = df0.append(df1, ignore_index=True)

他们工作得很好。但是当我使用删除 df0 和 df1

del df0
del df1

系统不释放内存。我在stackoverflow上读到这对于python/其他语言来说是典型的。但是,在此之后我遇到了内存问题,python 没有释放这个内存。

关于如何避免吃掉这么多内存的任何建议?

已解决:正如 juanpa.arrivillaga 所指出的,幸存的引用将意味着数据框不会被删除。一旦我删除了对数据框的所有引用,一旦删除了数据框,内存就会被释放。

标签: pythonpandasmemory

解决方案


import gc
del df0
del df1 
gc.collect()

原因是当你删除 df0 和 df1 时,程序只删除对内存中数据的引用。当你执行 gc.collect() 时,它会检查内存中尚未使用的那些数据并删除它们。


推荐阅读