Python 删除数据帧列时熊猫内存泄漏?

Python 删除数据帧列时熊猫内存泄漏?,python,memory,numpy,pandas,memory-leaks,Python,Memory,Numpy,Pandas,Memory Leaks,我有如下代码 df = ..... # load a very large dataframe good_columns = set(['a','b',........]) # set of "good" columns we want to keep columns = list(df.columns.values) for col in columns: if col not in good_columns: df = df.drop(col, 1) 奇怪的是,它成功地删

我有如下代码

df = ..... # load a very large dataframe
good_columns = set(['a','b',........]) # set of "good" columns we want to keep
columns = list(df.columns.values)
for col in columns:
   if col not in good_columns:
      df = df.drop(col, 1)

奇怪的是,它成功地删除了不好的第一列——因此,在内存中同时保存新旧数据帧并耗尽空间的情况下,这不是一个问题。它在被删除的第二列(MemoryError)上中断。这让我怀疑有某种内存泄漏。如何防止发生此错误?

可能是您不断返回一个新的非常大的数据帧。
尝试将inplace参数设置为True。

在读取大数据帧时使用usecols参数,以保留所需的列,而不是稍后删除它们。检查此处:

我尝试了
inplace=True
参数,但仍然存在相同的问题。处理由于您的体系结构而导致的内存泄漏。当我遇到同样的问题时,这对我很有帮助

无论如何我都会尝试使用del,但我很好奇为什么会发生这种情况。是的,这解决了它。仍然很好奇为什么它第一次没有破裂,而不是第二次——你会认为,如果仅仅是因为这个原因,它就会破裂。我明白你的意思。我不确定在执行python程序时如何处理内存。更具体地说,在重新分配该变量后,存储在昂贵变量中的内存是否立即可用?