通知
清除所有

并行化应用后熊猫groupby

RSS

(@sathish)
成员 主持人
加入:1年前
帖子:1391
11/05/2021下午12:33

我使用了rosetta.parallel。Pandas_easy并行化后应用组by,例如:

从rosetta.parallel。pandas_easy进口groupby_to_series_to_frame

df = pd。DataFrame ({a: 6, 2, 2, b:(4、5、6)},指数= (g1, g1, g2的))

groupby_to_series_to_frame (df, np。mean, n_jobs=8, use_apply=True, by=df.index)

然而,有人知道如何并行化一个返回数据帧的函数吗?正如预期的那样,这段代码对于rosetta来说失败了。

def tmpFunc (df):

df = df(“c”)。+ df.b

返回df

df.groupby (df.index)苹果(tmpFunc)

groupby_to_series_to_frame(df, tmpFunc, n_jobs=1, use_apply=True, by=df.index)


报价
(@anamika)
贵族成员
加入:1年前
帖子:1381
11/05/2021 34点

下面的代码你可以尝试,因为它不依赖于joblib,这对我来说是有效的:

from multiprocessing import Pool, cpu_count

def applyParallel (dfGrouped函数):

使用Pool(cpu_count()) as p:

ret_list = p.map(func, [group for name, group in df分组])

返回pandas.concat (ret_list)

这不能取代任何groupby.apply(),但它会覆盖典型的案例:例如,它应该覆盖案例2和案例3在下面的链接:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.core.groupby.GroupBy.apply.html


回复报价
分享:
Baidu