假设我有一个无限大的硬盘空间存储无限大的csv,但只有4GB的RAM。
使用以下方法将文件读入pandas是没有问题的:
reader = pandas.read_csv('./tools/OCHIN_forgeo.csv', chunksize=10000)
for i,r in enumerate(reader):
result_df = analyze_chunk(r)
result_df.to_csv('chunk_{}.csv'.format(i))
如果现在我想将这些块重新组合成一个完整的结果,则以下内容不起作用:
files = glob.glob('chunk_*.csv')
master_df = pandas.concat(pandas.read_csv(f, index_col=False) for f in files)
master_df.to_csv('master_df_output.csv',index=False)
如何迭代地读取块并将它们输出到磁盘而不会耗尽RAM?