Python 如何在Pandas中分组,在所有组上具有带参数的函数并返回参数

Python 如何在Pandas中分组,在所有组上具有带参数的函数并返回参数,python,function,pandas,pandas-groupby,Python,Function,Pandas,Pandas Groupby,我正在积累熊猫方面的经验,并遇到了这个挑战:我有一个源数据框架,比如dfu source,其中有“a”、“B”、“C”列。我想按“A”和“B”分组,每组都要根据“C”的所有值进行计算。结果应该是一个新的附加列“D” def myfunc(df, par): {some complex calculation based on all values of df['C']} return [dataframe or column] df_source['D'] = df_sourc

我正在积累熊猫方面的经验,并遇到了这个挑战:我有一个源数据框架,比如dfu source,其中有“a”、“B”、“C”列。我想按“A”和“B”分组,每组都要根据“C”的所有值进行计算。结果应该是一个新的附加列“D”

def myfunc(df, par):
    {some complex calculation based on all values of df['C']}
    return [dataframe or column]

df_source['D'] = df_source.groupby(['A', 'B']).{call myfunc per group, and pass parameter value}
我的问题:如何从这里开始创建列“D”?据我所知,apply适用于单行,而不是组

更新:在单个组中,每行可能有不同的D值,例如字符串“组中的第i个元素/n个元素”。

我认为您需要:

另一种可能的解决方案是使用:


如果myfunc接受第二个参数(例如一个数字)?另一个参数是某个常数?在一次运行中,是的,但应该显式传递。
grouped\u df.aggregate(func)
对每个分组对象应用
func
。看见您可以尝试将它们连接到一列,并将其添加到原始df。
def myfunc(x, p):
    #y => return `Series`
    return y

df_source['D'] = df_source.groupby(['A', 'B'])['C'].apply(lambda x: myfunc(x, par))
df_source['D'] = df_source.groupby(['A', 'B'])['C'].transform(lambda x: myfunc(x, par))