【问题标题】:Python Pandas: memory issue when subsetting a DataFramePython Pandas:子集 DataFrame 时的内存问题
【发布时间】:2018-05-06 15:59:06
【问题描述】:

我正在使用一些大的pandas DataFrame。我意识到在将一个 DataFrame 的子集分配给自身时,内存使用量(在 Win Task Manager 中监控)并没有减少。例如,如果有一个大的DataFrame df 大约占用10GB 内存,则在执行如下操作后:

df = df[df['v1']==1]

甚至

df = df.loc[0:10]

任务管理器中的内存使用行根本不会改变。

我已经搜索了一段时间并在这里和那里阅读了一些帖子 - 但找不到可以理解的原因或解决方案。任何帮助表示赞赏!

有没有办法减少内存使用?我读了一些帖子,建议一开始就少读一些数据,但在我的情况下,这个解决方案似乎相当困难。

【问题讨论】:

  • 你在读什么?你熟悉usecols吗?
  • 可能的原因有很多。您是否正在使用 IPython repl 工作?
  • @Jarad 我用它只选择了几列.. 但原始 df 有太多行而不是列。在某些情况下,我需要处理全部内容,但在某些情况下,我需要处理一部分行。
  • @juanpa.arrivillaga 我想是的,我在 jupyter notebook 上工作,有什么关系吗?
  • 是的。 Jupyter 笔记本(通常是 IPython)保留了一堆历史变量,因此可能有大量对您的原始数据框的引用,防止它被垃圾收集。

标签: python pandas dataframe memory subset


【解决方案1】:

对我有用的一个解决方案是在原地一一删除每一列/行。

for x in range(0,10):
    df.drop(x, inplace=True, axis=0)

【讨论】:

    猜你喜欢
    • 2017-06-08
    • 2013-12-28
    • 2018-10-07
    • 2020-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-17
    • 2013-10-14
    相关资源
    最近更新 更多