将非常大的数据帧(50GB)拆分为多个输出(水平)的最佳/最简单的方法是什么?
我想过做这样的事情:
stepsize = int(1e8)
for id, i in enumerate(range(0,df.size,stepsize)):
start = i
end = i + stepsize-1 #neglect last row ...
df.ix[start:end].to_csv('/data/bs_'+str(id)+'.csv.out')
Run Code Online (Sandbox Code Playgroud)
但我敢打赌有更聪明的解决方案吗?
Gau*_*ahi 10
在文件名中使用 id 否则它将不起作用。您错过了id
,而没有id
,则会出现错误。
for id, df_i in enumerate(np.array_split(df, number_of_chunks)):
df_i.to_csv('/data/bs_{id}.csv'.format(id=id))
Run Code Online (Sandbox Code Playgroud)
这个答案使我得到了一个令人满意的解决方案:
for idx, chunk in enumerate(np.array_split(df, number_of_chunks)):
chunk.to_csv(f'/data/bs_{idx}.csv')
Run Code Online (Sandbox Code Playgroud)