将一个非常大的数据帧(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')
但我敢打赌那里有一个更聪明的解决方案吗?
答案 0 :(得分:0)
好的,this回答使用
让我得到了令人满意的解决方案numpy.array_split(object,number_of_chunks)
number_of_chunks = 10
[df_i.to_csv('/data/bs_{id}.csv'.format(id=id)) for id, df_i in enumerate(np.array_split(df, number_of_chunks))]
或循环:
for id, df_i in enumerate(np.array_split(df, number_of_chunks)):
# the `id` inside {} may be omitted,
# I also inserted the missing closing parenthesis
df_i.to_csv('/data/bs_{}.csv'.format(id=id))
答案 1 :(得分:0)
在文件名中使用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))