在具有多个功能的groupby.agg中传递参数

问题描述

使用lambda功能:@H_502_3@

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函数并将其名称设置为自定义名称:@H_502_3@

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
喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!

猜你在找的编程问答相关文章

在Pandas数据框中旋转数据表
如何获得浮点序列中的下一个值?
获取Instagram粉丝
在批处理结束时检测到不可提交的事务。交易回滚
将一个文本文件文件夹与一个单元格中的每个内容合并为一个CSV文件
在使用JSON数据时,如何防止我的应用程序意外崩溃,“关闭”,而代之以处理异常?
JDBC批处理INSERT,返回ID
具有多个表的复杂INNER JOIN查询的回显结果
微信公众号搜索 “ 程序精选 ” ,选择关注!
微信公众号搜 "程序精选"关注