【发布时间】: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