从分组依据中解开列表理解

时间:2018-08-13 21:33:09

标签: python list-comprehension apply joblib

所以基本上我有一个可以并行应用的函数。

def applyParallelGroupHeader(dfGrouped, func, threshold, verbose, cn):
    retLst = Parallel(n_jobs=-1, backend="threading")(delayed(func)(group, threshold, verbose, cn) for name, group in dfGrouped)
    d = {'HEADER': retLst}
    df = pd.DataFrame(data=d)
    return df

这很好用,因为它返回一个数组,其中包含每个组的调用函数的结果。但是,当我这样做时,我不知道如何获取组的名称(在这种情况下,该名称是我需要将结果与没有组的原始数据框合并的ID),添加这样的名称:

def applyParallelGroupHeader(dfGrouped, func, threshold, verbose, cn):
    retLst = Parallel(n_jobs=-1, backend="threading")((delayed(func)(group, threshold, verbose, cn), name) for name, group in dfGrouped)
    d = {'HEADER': retLst}
    df = pd.DataFrame(data=d)
    return df

但是我还没有找到解压缩它的方法,因此得到了一个生成器。我想做的是将其作为数据帧返回,在该数据帧中我具有组ID和函数的结果。我已经用一个简单的

做了一些测试
names = ((name,group) for name, group in items_groupby)

但是我无法使用结果。

>>> names
<generator object <genexpr> at 0x10efa0930>
>>> names.next()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'generator' object has no attribute 'next'

有什么建议吗?谢谢

0 个答案:

没有答案