什么是分割一个非常大的数据帧(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')
但我敢打赌,有一个聪明的解决办法了吗?
使用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))
好吧,this答案用给我带来了一个令人满意的解决方案
numpy.array_split(对象,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))