有谁知道如何在具有 多个 功能的groupby.agg()中传递参数?
最重要的是,我想将其与自定义函数一起使用,但是我将使用需要参数的内置函数来询问我的问题。
假设:
import pandas as pd import numpy as np import datetime np.random.seed(15) day = datetime.date.today() day_1 = datetime.date.today() - datetime.timedelta(1) day_2 = datetime.date.today() - datetime.timedelta(2) day_3 = datetime.date.today() - datetime.timedelta(3) ticker_date = [('fi', day), ('fi', day_1), ('fi', day_2), ('fi', day_3), ('di', day), ('di', day_1), ('di', day_2), ('di', day_3)] index_df = pd.MultiIndex.from_tuples(ticker_date, names=['lvl_1', 'lvl_2']) df = pd.DataFrame(np.random.rand(8), index_df, ['value'])
我该怎么做:
df.groupby('lvl_1').agg(['min','max','quantile'])
作为“分位数”的参数:
q = 0.22
使用lambda功能:
lambda
q = 0.22 df1 = df.groupby('lvl_1')['value'].agg(['min','max',lambda x: x.quantile(q)]) print (df1) min max <lambda> lvl_1 di 0.275401 0.530000 0.294589 fi 0.054363 0.848818 0.136555
或者可以创建f函数并将其名称设置为自定义列名称:
f
q = 0.22 f = lambda x: x.quantile(q) f.__name__ = 'custom_quantile' df1 = df.groupby('lvl_1')['value'].agg(['min','max',f]) print (df1) min max custom_quantile lvl_1 di 0.275401 0.530000 0.294589 fi 0.054363 0.848818 0.136555