惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

C
Check Point Blog
有赞技术团队
有赞技术团队
博客园 - 三生石上(FineUI控件)
博客园_首页
博客园 - 【当耐特】
WordPress大学
WordPress大学
月光博客
月光博客
博客园 - 叶小钗
S
SegmentFault 最新的问题
雷峰网
雷峰网
H
Help Net Security
宝玉的分享
宝玉的分享
A
About on SuperTechFans
IT之家
IT之家
J
Java Code Geeks
Hugging Face - Blog
Hugging Face - Blog
D
DataBreaches.Net
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - 聂微东
T
The Blog of Author Tim Ferriss
B
Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Y
Y Combinator Blog

老董笔记

尚硅谷机构在哪?尚硅谷培训怎么样?靠谱吗-互联网IT百科 韩顺平介绍,传智讲师,开办泰牛,入尚硅谷等一系列-互联网IT百科 pandas多重索引标准样式(写入excel有空行)-互联网IT百科 cannot join with no overlapping index names-互联网IT百科 pandas多列变多行(即宽表变长表)melt和stack函数-互联网IT百科 pandas多行转多列(长表变宽表)pivot和unstack-互联网IT百科 Index contains duplicate entries, cannot reshape完美解决-互联网IT百科 single positional indexer is out-of-bounds-互联网IT百科 Can only compare identically-labeled Series objects-互联网IT百科 pandas transform用法详解(多个案例)-互联网IT百科 python四舍五入精确实现-互联网IT百科 pandas的groupby使用apply分组排序-互联网IT百科 index 0 is out of bounds for axis 0 with size 0-互联网IT百科 pandas分组过滤filter函数-互联网IT百科 联想Win10系统如何禁用触摸屏关闭触摸-互联网IT百科 groupby分组计算transform转换返回相同长度序列-互联网IT百科 brooks seo教程python教程,brooks seo教程网盘,布鲁seo资源-互联网IT百科 电脑右键文件夹一直转圈电卡死怎么回事-互联网IT百科 施琪嘉的心理成长课(荐)-互联网IT百科 百度SEO公司_SEO推广公司哪家好_SEO外包服务如何选-老董笔记 pandas的groupby单列多列分组聚合运算-互联网IT百科 DataFrameGroupBy对象及分组个数、分组大小、组名索引、组数据详解-互联网IT百科 pandas中groupby之Grouper and axis must be same length-互联网IT百科 pandas中groupby的分组原理-互联网IT百科 pandas的groupby的使用详解大全-互联网IT百科 openpyxl单元格自动换行强制换行Alignment(wrapText=True)-互联网IT百科 python教程全套(可就业)-互联网IT百科 联想win10系统CPU显示100%,电脑呼呼响怎么回事-互联网IT百科 如何自制CPU,CPU原理是怎么样的?-互联网IT百科 多款视频制作工具(免费)分享及素材推荐-互联网IT百科
groupby后agg同1列用多个聚合函数、不同列用不同函数、自定义...
2022-02-04 · via 老董笔记

  上一篇文章展示了利用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。
有宝贵意见可添加站长微信(底部),获取技术资料请到公众号(底部)。同行交流请加群 python学习会