【问题标题】:Memory leak in pandas when dropping dataframe column?删除数据框列时熊猫中的内存泄漏?
【发布时间】:2015-05-08 17:15:36
【问题描述】:

我有一些类似下面的代码

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)上中断。这让我怀疑存在某种内存泄漏。如何防止此错误发生?

【问题讨论】:

  • 无论如何我都会尝试使用 del,但我很好奇为什么会这样。

标签: python memory numpy pandas memory-leaks


【解决方案1】:

我尝试了inplace=True 参数,但仍然遇到同样的问题。 Here's another solution 处理由于您的体系结构引起的内存泄漏。当我遇到同样的问题时,这对我有帮助

【讨论】:

    【解决方案2】:

    在读取大数据框时使用 usecols 参数来保留您想要的列,而不是稍后删除它们。在这里查看:http://pandas.pydata.org/pandas-docs/dev/generated/pandas.io.parsers.read_csv.html

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 是的,它修复了它。仍然很好奇为什么它第一次没有破坏,而不是第二次 - 你会认为如果它仅仅是因为它会破坏然后。
      • 我明白你的意思。我不确定执行 python 程序时如何处理内存。更具体地说,存储在昂贵变量中的内存是否在重新分配该变量后立即可用?
      猜你喜欢
      • 2012-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-12
      • 1970-01-01
      • 2021-11-01
      相关资源
      最近更新 更多