我正在尝试使用下面的代码片段合并约50个(10M x 6)数据帧:
for i, df in enumerate(dfs, start=1):
df.rename(columns={col:'{}_df{}'.format(col, i) for col in ("N_ALLELES", "N_CHR", "REF:freq", "ALT:freq")},
inplace=True)
merge = functools.partial(pd.merge, on=['Chr.', 'Position'])
result = functools.reduce(merge, dfs)
对于多达800万行的df,该代码运行得很好,但是当我扩展至1000万行时,由于内存不足而导致崩溃。我已经审查了阐述类似问题的其他主题。
建议包括在合并之前对dfs进行索引(这不能解决我的问题)或使用numpy.memmap
,这我不确定它是否适合当前方法?
任何建议都会很有帮助!