Я пытаюсь добавить несколько столбцов в фрейм данных dask, чтобы сохранить результаты применения функции.Это будет мой первый вопрос о переполнении стека, надеюсь, это не слишком долго!
В настоящее время у меня есть этот рабочий фрагмент кода:
from dask import dataframe as dd
from multiprocessing import cpu_count
nCores = cpu_count()
import dask.multiprocessing
dask.config.set(scheduler='processes')
def dfFunc(varA, varB):
# Some calculations...
return NewValue
ddf = dd.from_pandas(weather,npartitions=nCores)
ddf['NewCol1'] = ddf.map_partitions(lambda df: df.apply(lambda x: dfFunc(x['VarA'],x['VarB']), axis=1))
res = ddf.compute()
По сути, я создаю как dask dataframeиз pandas dataframe 'weather' тогда я применяю функцию 'dfFunc' к каждой строке dataframe.
Этот фрагмент кода работает нормально, так как выходные данные res представляют собой исходный фрейм данных погоды с новым столбцомназывается 'NewCol1'.
Моя путаница заключается в том, что если я хочу, чтобы моя функция возвращала список, а не одно значение, как мне тогда создать несколько столбцов в кадре данных dask.
При просмотре предыдущих тем, используя список, якобы предполагается добавить столбцы в Pandas Dataframe.Следовательно, изменив строки
return NewValue
ddf['newCol1'] =
на следующее:
return [NewValue1,NewValue2]
ddf =
Однако, похоже, он не очень хорошо работает с кадром данных dask, или я просто не знаю, как правильно кодироватьв результате я получаю один столбец со списком значений.
X Y
val val [NewValue1,NewValue2]
В качестве бонуса я бы хотел назначить имена этим столбцам и в этом процессе, но как ddf.compute () возвращает фрейм данных pandas, добавление имен столбцов после этого не должно быть слишком сложным.