dask map_partitions возвращает pandas фрейм данных, а не dask - PullRequest
0 голосов
/ 16 марта 2020

Все, что я могу найти, указывает, что dask map_partitions должен возвращать объект dask dataframe. Но следующий фрагмент кода и соответствующий вывод (с использованием logzero) этого не делают. (примечание: calc_delta возвращает массив чисел с плавающей запятой).

352         logger.debug(type(self.dd))
353         self.dd = self.dd.map_partitions(
354             lambda df: df.assign(
355                 duration1=lambda r: calc_delta(r['a'], r['b'])
356                 , duration2=lambda r: calc_delta(r['a'], r['c'])
357             )
358         ).compute(scheduler='processes')
359         logger.debug(type(self.dd))

[D 200316 19:19:28 исследовательский: 352]

[Д 200316 19:19:43, разведка: 359]

Все рекомендации (с большим количеством взлома) предполагают, что это способ добавить (логические) столбцы в разделенный фрейм данных dask. Но нет, если он на самом деле не возвращает dask-фрейм данных.

Чего мне не хватает?

1 Ответ

1 голос
/ 17 марта 2020

Разве это не потому, что вы называете «вычислить»?

Может быть так:

self.dd.map_partitions(
             lambda df: df.assign(
                 duration1=lambda r: calc_delta(r['a'], r['b'])
                 , duration2=lambda r: calc_delta(r['a'], r['c'])
             )
         )

фактически возвращает кадр данных dask. Но затем вы вызываете compute, который должен вернуть вам результат, следовательно, pandas dataframe, нет?

...