Подтвердить что ты не робот

Запись разделов Dask в один файл

Новый для dask, у меня есть файл 1GB CSV, когда я его читаю в dask dataframe, он создает около 50 разделов после моих изменений в файле при записи, он создает столько файлов, сколько разделов. < ш > Есть ли способ записать все разделы в один файл CSV и есть ли способы доступа к разделам?
Спасибо.

4b9b3361

Ответ 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')