Pandas中groupby对象的一大功能是能够使用apply
在组上运行任意功能。我正在尝试使用multiprocessing
对此进行并行化。
所以从一个groupby
对象开始,我想:
multiprocessing.Pool
工人groupby.apply
这是代码中理想的工作流程:
# create the initial groupby
gb = df.groupby('variable')
# split into multiple groupby's
many_groupbys = gb.split(n_chunks=10)
# now many_groupbys is a list of 10 groupby objects
# this is our transformer
def func(groupby):
return groupby.apply(transformation)
# submit to pool
with Pool(10) as pool:
results = pool.map(func, many_groupbys)
result = pd.concat(results)
那么,有没有一种方法可以将单个groupby对象拆分为多个groupby对象?是否有更好的工作流可以并行处理数据帧上的计算,而又不能随意在行上拆分,而又关心在行组上进行处理?
请注意,我不想单独处理组,我希望使用groupby对象。