Pandas 数据框 to_csv - 拆分为多个输出文件

Pla*_*Tag 7 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')
Run Code Online (Sandbox Code Playgroud)

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

正如jakevdp所指出的,HDF5是存储大量数值数据的更好方法,但它不满足我的业务需求。

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)


Pla*_*Tag 7

这个答案使我得到了一个令人满意的解决方案:

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)