如何在另一个函数中将Python pandas函数作为变量/参数传递?

时间:2019-04-25 13:22:23

标签: python pandas

import pandas as pd

def func_sum(df, cols, col):
    res = df[cols].groupby(col).sum()
    return res

def func_count(df, cols,col):
    res = df[cols].groupby(col).count()
    return res

def func_ave(df, cols, col):
    res = df[cols].groupby(col).mean()
    return res

我将这三个功能组合在一起的方式如下所示,

def func(df, cols, col, method):
    if method == 'sum':
        return df[cols].groupby(col).sum()
    if method == 'count':
        return df[cols].groupby(col).count()
    if method == 'mean':
        return df[cols].groupby(col).mean()

我想知道如果不使用IF ELSE语句,是否还有更好的方法可以做到这一点。 如何将(求和,计数或均值)函数作为变量传递,然后让传递的函数变量在主“ func”函数中调用。

我将不胜感激任何建议。

1 个答案:

答案 0 :(得分:1)

使用groupby.agg,它可以通过引用或名称来使用一个或多个功能。

例如:

def func(df, cols, col, method):
    return df[cols].groupby(col).agg(method)

func(df, cols, col, pd.Series.sum)
func(df, cols, col, 'count')
func(df, cols, col, np.mean)