首页 文章

如何在Pandas中进行分组,在所有组中都有参数的函数并返回参数

提问于
浏览
1

我正在积累Pandas的经验并且遇到了这个挑战:我有一个源数据框,比如df_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-th element/n-elements in group' .

1 回答

  • 2

    我想你需要flexible apply

    def myfunc(x, p):
        #y => return `Series`
        return y
    
    df_source['D'] = df_source.groupby(['A', 'B'])['C'].apply(lambda x: myfunc(x, par))
    

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

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

相关问题