Функция применения Pandas-Dask DataFrame с возвратом списка - PullRequest
0 голосов
/ 10 октября 2018

Я пытаюсь добавить несколько столбцов в фрейм данных 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, добавление имен столбцов после этого не должно быть слишком сложным.

1 Ответ

0 голосов
/ 11 октября 2018

Похоже, что уже есть похожий вопрос, который я пропустил при переполнении стека.Ну, по крайней мере, вопрос, который обеспечивает решение этой проблемы.

Dask Dataframe разбить столбец списка на несколько столбцов

...