熊猫据帧to_csv - 拆分成多个输出文件

问题描述 投票:0回答:2

什么是分割一个非常大的数据帧(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')

但我敢打赌,有一个聪明的解决办法了吗?

python pandas
2个回答
2
投票

使用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))

1
投票

好吧,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))
© www.soinside.com 2019 - 2024. All rights reserved.