Я пытаюсь добавить несколько столбцов в dysframe для хранения результатов функции apply. Это будет мой первый вопрос о переполнении стека, я надеюсь, что это не слишком долго!
Текущий у меня есть эта часть кода:
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" к каждой строке фрейма данных.
Этот фрагмент кода отлично работает, так как выходной "res" является исходным фреймворком данных с новым столбцом "NewCol1".
Моя путаница возникает, когда я хочу, чтобы моя функция возвращала список, а не какое-то одно значение, как мне тогда приступить к созданию нескольких столбцов в фреймворке данных dask.
От взгляда на предыдущие потоки, используя список, предположительно предположим, что нужно добавить столбцы в Pandas Dataframe. Следовательно, изменение линий
return NewValue
ddf['newCol1'] =
К следующему:
return [NewValue1,NewValue2]
ddf =
Однако, похоже, это не так хорошо работает с фреймворком данных dask, или я просто не знаю, как правильно его кодировать, поскольку в итоге я получаю один столбец со списком значений в нем.
X Y
val val [NewValue1,NewValue2]
В качестве бонуса я хотел бы также назначать имена этим столбцам в этом процессе, но поскольку ddf.compute() возвращает панда данных, добавление имен столбцов в дальнейшем не должно быть слишком сложным.
Похоже, что уже есть аналогичный вопрос, который я пропустил при переполнении стека. Ну, по крайней мере, вопрос, который дает решение этой проблемы.
Dask Dataframe разделяет столбец списка на несколько столбцов