删除数据帧,但仍会丢失内存

时间:2018-08-14 23:29:20

标签: python pandas memory

我有两个大数据帧,分别称为df0(1.2亿个obs)和df1(5000万个obs)。它们具有相同的44个变量(作为列)。我需要附加数据,以便新数据框具有120 + 50 = 170百万个观测值和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所指出的,尚存的引用将意味着该数据帧将不会被删除。删除所有对数据框的引用后,删除数据框后就释放了内存。

1 个答案:

答案 0 :(得分:0)

import gc
del df0
del df1 
gc.collect()

原因是当您删除df0和df1时,程序仅删除对内存中数据的引用。当您执行gc.collect()时,它将检查内存中未使用的那些数据并将其删除。 / p>