【发布时间】:2015-03-20 18:21:15
【问题描述】:
我生成了一个大的腌制稀疏数据帧,但由于它太大而无法保存在内存中,我不得不在生成时逐步追加,如下所示:
with open(data.pickle, 'ab') as output:
pickle.dump(df.to_sparse(), output, pickle.HIGHEST_PROTOCOL)
然后为了读回文件,我执行以下操作:
df_2 = pd.DataFrame([]).to_sparse()
with open(data.pickle, 'rb') as pickle_file:
try:
while True:
test = pickle.load(pickle_file)
df_2 = pd.concat([df_2, test], ignore_index= True)
except EOFError:
pass
鉴于此文件的大小(20 GB),此方法有效,但显然需要很长时间。是否可以并行化 pickle.load/pd.concat 步骤以加快加载时间?或者是否有任何其他建议可以加快这个过程,特别是在代码的加载部分。
注意:生成步骤是在资源少得多的计算机上完成的,这就是为什么加载步骤(在功能更强大的机器上完成)可以将 DF 保存在内存中。
谢谢!
【问题讨论】:
标签: python pandas pickle concat sparse-matrix