将Dask分区写入单个文件

时间:2016-09-19 06:39:10

标签: python dask

dask的新用户,当我在1GB数据框中读取它时,我有一个dask CSV文件,当我写入文件后,它会创建大约50个分区,它创建为许多文件作为分区 有没有办法将所有分区写入单个CSV文件,是否有办法访问分区?
谢谢。

2 个答案:

答案 0 :(得分:18)

简短回答

不,Dask.dataframe.to_csv只将CSV文件写入不同的文件,每个分区一个文件。但是,有很多方法可以解决这个问题。

后续连接

也许只是在dask.dataframe写入后连接文件?这在性能方面可能接近最优。

df.to_csv('/path/to/myfiles.*.csv')
from glob import glob
filenames = glob('/path/to/myfiles.*.csv')
with open('outfile.csv', 'w') as out:
    for fn in filenames:
        with open(fn) as f:
            out.write(f.read())  # maybe add endline here as well?

或使用Dask.delayed

但是,您可以使用dask.delayed <{3}}

自行完成此操作

这为您提供了一个您可以使用的延迟值列表:

list_of_delayed_values = df.to_delayed()

然后由您构建计算以将这些分区顺序写入单个文件。这并不难,但可以在调度程序上进行一些备份。

答案 1 :(得分:2)

您可以使用compute函数将dask数据框转换为pandas数据框,然后使用to_csv。像这样的东西:

  

df_dask.compute()。to_csv('csv_path_file.csv')