Новый для dask
, у меня есть файл 1GB
CSV, когда я его читаю в dask
dataframe, он создает около 50 разделов после моих изменений в файле при записи, он создает столько файлов, сколько разделов. < ш > Есть ли способ записать все разделы в один файл CSV и есть ли способы доступа к разделам?
Спасибо.
Запись разделов Dask в один файл
Ответ 1
Короткий ответ
Нет, 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, используя dask.delayed рядом с кадрами данных
Это дает вам список задержек, которые вы можете использовать, как вам нравится:
list_of_delayed_values = df.to_delayed()
Затем вам нужно структурировать вычисление для последовательного написания этих разделов в один файл. Это непросто сделать, но может привести к некоторому резервному копированию в планировщике.
Ответ 2
вы можете преобразовать ваш dask-фрейм в pandas-фрейм с помощью функции compute
, а затем использовать to_csv
. как то так:
df_dask.compute().to_csv('csv_path_file.csv')