合并熊猫中的两个数据集时释放内存

时间:2018-10-17 22:36:04

标签: python pandas memory-management

我有两个巨大的表作为pandas对象,很难容纳到内存中,我需要将它们组合成第三个:

df = pd.melt(df, id_vars='index', value_vars=cell_ids, 
             var_name='cell_id', value_name='expr')
df_raw = pd.melt(df_raw, id_vars='index', value_vars=cell_ids, 
             var_name='cell_id', value_name='raw_expr')

df_combined = pd.merge(df, df_raw, on="index")

是否有一种在创建df时立即删除df_rawdf_combined的方法,以便在执行merge操作时不会出现内存不足的错误?

这不是重复的,因为:

我需要即时释放内存。我不能只删除两个数据帧,因为我将无法运行合并。运行合并后我无法执行del操作,因为已经发生内存不足错误。因此,我需要一种创建合并表并同时销毁输入表的方法。我认为也许有一些软件包和软件可以真正实现这一目标。

1 个答案:

答案 0 :(得分:1)

我不确定这是否行得通,但也许您应该尝试一下。首先将您的一个数据帧分成较小的数据帧。这样

df = pd.concat([df1,...,dfn])

然后可以将每个小数据框df1,...,dfn与df_raw合并。每次合并后,您可以将此数据帧保存到磁盘。完成所有合并后,您将释放所有内存,加载所有合并表,然后将它们连接起来。

如果需要有关如何执行此操作的技术建议,请告诉我。