Python Pandas Функции параллельно, используя карту пула - PullRequest
0 голосов
/ 04 марта 2020

У меня есть большой фрейм данных, который я хочу разделить и запустить эти разделения параллельно через функцию. Затем я хочу объединить результат в окончательный фрейм данных. Моя параллельная функция выглядит так:

def parallel(df, func, n_cores=4):
    df_split = np.array_split(df, n_cores)
    pool = Pool(n_cores)
    df = pd.concat(pool.map(func, df_split))
    pool.close()
    pool.join()

    return df

Пример функции:

def example(df):
    ...
    display(df)
    return df

Запуск их:

data = {'Name':['Tom', 'nick', 'krish', 'jack'], 'Age':[20, 21, 19, 18]} 

df = pd.DataFrame(data) 

test = parallel(df, example)

test()

Я проверил функцию parallel и оно работает. Он разбивает информационный кадр на 4 блока и анализирует их в моей функции example. Все они отображаются индивидуально. Но возврат из моей example функции не работает. Я получаю следующую ошибку, и это заставляет меня думать, что это что-то с этим возвратом в конкатенацию?

Error sending result: Reason: 'AttributeError("'NoneType' object has no attribute 'picklable'")

Просто странно, как они отображаются, но не возвращаются! Любая помощь будет оценена.

...