如何解决在具有多个功能的groupby.agg中传递参数
使用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
函数并将其名称设置为自定义列名称:
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
解决方法
有谁知道如何在具有 多个 功能的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),day_2),day_3),('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