[英]How to pass a Python pandas function as a variable/parameter in another function?
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
The way I did to combine these three functions is like below, which is not very elegant. 我将这三个功能结合在一起的方式如下所示,这不是很优雅。
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()
I wonder if there is a better way to do this without using IF ELSE statement. 我想知道是否有更好的方法而不使用IF ELSE语句。 How Can I Pass the function of (sum, count, or mean) as a variable and then let's the passed function variable to be called inside the main 'func' function. 如何将(求和,计数或均值)函数作为变量传递,然后让传递的函数变量在主“ func”函数中调用。
I would greatly appreciate any suggestions. 我将不胜感激任何建议。
Use groupby.agg
, which takes one or more functions by reference or by name. 使用groupby.agg
,它通过引用或名称接受一个或多个功能。
For example: 例如:
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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.