不,Dask.dataframe.to_csv仅将CSV文件写入不同的文件,每个分区一个文件。但是,有一些解决方法。
之后串联也许只是在dask.dataframe将文件写入后将它们连接起来?就性能而言,这可能接近最佳。
或使用Dask.delayeddf.to_csv('/path/to/myfiles.*.csv')from glob import globfilenames = 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与数据帧一起使用
这为您提供了可以使用的延迟值列表,但您可以根据需要:
list_of_delayed_values = df.to_delayed()
然后由您来构建计算结构,以将这些分区顺序写入单个文件。这并非难事,但会在调度程序上造成一些备份。
编辑1:(2019年10月23日)
在Dask
2.6.x中,参数为
single_file。默认情况下为
False。您可以将其设置
True为获取单个文件输出,而无需使用
df.compute()。
例如:
df.to_csv('/path/to/myfiles.csv', single_file = True)
参考:to_csv的文档
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)