您的位置: 网站首页> Pandas教程> 当前文章
groupby后agg同1列用多个聚合函数、不同列用不同函数、自定义函数
老董-我爱我家房产SEO2022-02-04173围观,139赞
上一篇文章展示了利用groupby做分组聚合的一些常规情形,如果想全面了解分组聚合的场景,可以参考文章pandas之groupby使用详解。如果想实现复杂一些的分组计算则需要借助agg函数,DataFrameGroupBy对象和 DataFrame本身都可以使用agg函数,其中pandas.core.groupby.GroupBy.agg官方文档示意如下:
GroupBy.agg(func,*args,**kwargs)
我们演示三种分组经计算情形:1个或多个列使用多个分组聚合函数;不同的列使用不同的函数分组聚合;使用自定义函数分组聚合。
1)1个或多个列使用多个分组聚合函数(内置函数直接以字符串传入即可)
# -*- coding:UTF-8 -*- import pandas as pd df = pd.DataFrame({'name': ['张飞', '刘备','悟空', '唐僧'], 'book':['三国','三国','西游','西游'], 'level':[10,8,100,99], 'age':[50,52,500,550] }) df_res = df.groupby('book').agg({'age':['sum','mean']}) df_res2 = df.groupby('book').agg(['sum','mean']) print(df_res) print('------') print(df_res2)
age sum mean book 三国 102 51.0 西游 1050 525.0 ------ level age sum mean sum mean book 三国 18 9.0 102 51.0 西游 199 99.5 1050 525.0
2)不同的列使用不同的函数分组聚合(内置函数直接以字符串传入即可)
# -*- coding:UTF-8 -*- # -*- coding:UTF-8 -*- import pandas as pd df = pd.DataFrame({'name': ['张飞', '刘备','悟空', '唐僧'], 'book':['三国','三国','西游','西游'], 'level':[10,8,100,99], 'age':[50,52,500,550] }) df_res = df.groupby('book').agg({'age':['sum','mean'],'level':['max']}) print(df_res)
age level sum mean max book 三国 102 51.0 10 西游 1050 525.0 100
3)使用自定义函数分组聚合
对于自定义函数,其传入函数的参数是每个子组的列,逐列进行传入,自定义函数不能以字符串的形式传入agg函数中,要直接以函数名传入。
# -*- coding:UTF-8 -*- import pandas as pd def func(ser_col): value = ser_col.max() - ser_col.min() return value df = pd.DataFrame({'name': ['张飞', '刘备','悟空', '唐僧'], 'book':['三国','三国','西游','西游'], 'level':[10,8,100,99], 'age':[50,52,500,550] }) df_res = df.groupby('book').agg({'age':[func],'level':lambda x:x.max()-x.min()}) print(df_res)
age level func <lambda> book 三国 2 2 西游 50 1
很赞哦!
python编程网提示:转载请注明来源www.python66.com。
有宝贵意见可添加站长微信(底部),获取技术资料请到公众号(底部)。同行交流请加群
相关文章
文章评论
-
groupby后agg同1列用多个聚合函数、不同列用不同函数、自定义函数文章写得不错,值得赞赏
站点信息
- 网站程序:Laravel
- 客服微信:a772483200