【发布时间】:2018-07-30 20:47:55
【问题描述】:
如this 中所述,可以显式释放数据帧的内存。我遇到了一个问题,该问题有点扩展该问题。我经常导入整个数据集并对其进行选择。选择往往有两种形式:
df_row_slice = df.sample(frac=0.6)
df_column_slice = df[columns]
在我的代码中,我知道我将不再对原始 df 进行任何引用。有没有办法释放切片未引用的所有内存?我意识到我可以在切片时使用 .copy() ,但这种临时复制会导致我超出记忆力。
更新
在回复之后,我认为方法是从原始框架中删除列或行。
df_column_slice = df[columns]
cols_to_drop = [i for i in df.columns if i not in columns]
df = df.drop(columns=cols_to_drop)
或
df_row_slice = df.sample(frac=0.6)
df = df.drop(df_row_slice.index)
希望垃圾收集能够正常工作以释放内存。打电话会不会很聪明
import gc
gc.collect()
只是为了安全?顺序重要吗?我可以在切片之前放下没有问题。在我的具体情况下,我制作了两种类型的几片。我希望我可以 del df 并且内存管理会在后台执行类似的操作。
【问题讨论】:
标签: python pandas memory memory-management subset