Как правильно перебрать цикл for с помощью Dask? - PullRequest
0 голосов
/ 02 мая 2019

Когда я запускаю такой цикл (см. Ниже), используя dask и pandas, оценивается только последнее поле в списке. Предположительно это из-за "ленивых оценок"

import pandas as pd
import dask.dataframe as ddf

df_dask = ddf.from_pandas(df, npartitions=16)

for field in fields:
    df_dask["column__{field}".format(field=field)] = df_dask["column"].apply(lambda _: [__ for __ in _ if (__ == field)], meta=list)

Если я добавлю ".compute ()" в последнюю строку:

df_dask["column__{field}".format(field=field)] = df_dask["column"].apply(lambda _: [__ for __ in _ if (__ == field)], meta=list).compute()

тогда он работает правильно, но является ли это наиболее эффективным способом выполнения этой операции? Есть ли способ для Dask добавить все элементы из списка полей сразу, а затем запустить их в один выстрел с помощью compute ()?

редактировать ---------------

Пожалуйста, смотрите скриншот ниже для работающего примера

enter image description here

1 Ответ

1 голос
/ 04 мая 2019

Вы захотите позвонить .compute() в конце вашего вычисления, чтобы запустить работу.Внимание.*

...