Pandas里Groupby的apply,agg函数用法

本文介绍了Pandas中Groupby函数的使用方法及其与SQL Groupby的相似之处,并详细解释了Groupby中的apply函数如何对分组数据进行处理,包括自定义函数应用及与原数据合并的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Pandas里Groupby的apply用法

Pandas的Groupby函数即分组聚合函数,与SQL的Groupby有着异曲同工之妙,而我这里记录的是Groupby里的apply函数用法,即针对每个分组进行相应的数据处理,如下图简单的分组求和:



原数据按照Key分组并求和


df.groupby('key').apply(lamdba x: x['v'].sum())


从上可以得到apply中的参数x相当于是分组后的每种key包含的行数据,从行数据中找到'v'列并求和 即可返回每种key的v的求和数(这里如果要将key从index释放出来则使用reset_index())

下面是apply的另外一种用途,即保证原数据的前提下把分组后求得的和与原数据合并,首先我们先定义一个函数

def func_sum(df):
    df['v_sum'] = df['v'].sum()
    return df

可以看到原数据添加了新的一列,这一列的值是每种key对应的v的和,上述自定义函数这类方法更具有灵活性,可以同时求和,平均,最大值,最小值,排序等等

以上便是对于Groupby中的apply函数的简单介绍,在Groupby中还有一类函数,那就是agg函数,这个函数只能实现特定的聚合操作,比如mean,sum, apply函数可以说是它的泛化,比如你可以用apply实现组内排序,但是agg函数并不能。

Pandas里Groupby的agg函数用法

agg函数传入一个字典,键指对应的列名,值指聚合函数如{'sum', 'count', 'mean'}之类

下面的操作是agg的简化版


同样可以达到聚合的目的,但是实现排序等操作时则需要用到比较高级的apply函数或者rank

而当需要在原数据的index上返回结果,可以使用pandas.Groupby.transform, 这样可以将统计结果还原到组内每一条数据中

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值