Pandas dataframe to_csv - 拆分成多个输出文件

时间:2017-06-12 14:45:28

标签: python pandas

将一个非常大的数据帧(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')

但我敢打赌那里有一个更聪明的解决方案吗?

2 个答案:

答案 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))