0
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. 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.

I would greatly appreciate any suggestions.

1

1 Answer 1

1

Use groupby.agg, which takes one or more functions by reference or by name.

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) 
Sign up to request clarification or add additional context in comments.

1 Comment

It is good to learn about pandas' agg function. Thanks a lot!

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.