dask
的新用户,当我在1GB
数据框中读取它时,我有一个dask
CSV文件,当我写入文件后,它会创建大约50个分区,它创建为许多文件作为分区
有没有办法将所有分区写入单个CSV文件,是否有办法访问分区?
谢谢。
答案 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 <{3}}
自行完成此操作这为您提供了一个您可以使用的延迟值列表:
list_of_delayed_values = df.to_delayed()
然后由您构建计算以将这些分区顺序写入单个文件。这并不难,但可以在调度程序上进行一些备份。
答案 1 :(得分:2)
您可以使用compute
函数将dask数据框转换为pandas数据框,然后使用to_csv
。像这样的东西:
df_dask.compute()。to_csv('csv_path_file.csv')