Python joblib并向dataframe添加新行

Python joblib并向dataframe添加新行,python,Python,我定义以下函数来更新我的日期框 def func(idx,value): if idx in df.index: df.loc[idx] += value else: df.loc[idx] = value 然后,我使用joblib进行并行循环 Parallel(n_jobs=-1)(delayed(func)(idx, value) for idx, value in key(df2.name,df.score)) 例如,我有两个数据帧: n

我定义以下函数来更新我的日期框

def func(idx,value):
    if idx in df.index:
        df.loc[idx] += value
    else:
        df.loc[idx] = value
然后,我使用joblib进行并行循环

Parallel(n_jobs=-1)(delayed(func)(idx, value) for idx, value in key(df2.name,df.score))
例如,我有两个数据帧:

name    score
john    10

然后,我希望我的函数将第一个数据帧更新为

name    score
john    20
chris   30
然后,我得到一个错误,说赋值目的地是只读的。我认为这是因为我试图在并行计算时向数据帧添加新行


有什么办法可以四处走动吗?我也愿意接受除并行循环之外的任何其他建议,比如使用cudf进行gpu计算(不确定循环速度是否加快)。

您可以对数据帧进行分组,并迭代分组,将每个分组传递给函数,并将函数结果存储到列表中,最后可以连接到列表中

这里我们有一些名字和年龄,我们将按年龄分组并传递一个并行函数,取平均值并将结果返回到一个列表中,该列表被连接为最终产品

import pandas as pd
from joblib import Parallel, delayed
import multiprocessing

df = pd.DataFrame({'name':['john','john','chris','chris'],
                  'age':[23,46,32,56]})

def applyParallel(dfGrouped, func):

    retLst = Parallel(n_jobs=multiprocessing.cpu_count())(delayed(func)(name, data) for name, data in dfGrouped)

    return pd.concat(retLst)


def my_function(name,data):
    ### Process data here
    data = data.groupby('name').mean()
    return data

# Group by some column in your dataframe
output = applyParallel(df.groupby(['name']), my_function)
输出

         age
name    
chris   44.0
john    34.5

嗨,我试过你的代码,但它没有给我我想要的。。。我已经添加了我想要的示例,如果我弄错了,请解释一下您的代码可以如何再次帮助我?非常感谢。
         age
name    
chris   44.0
john    34.5