您好,登录后才能下订单哦!
密码登录
            
            
            
            
        登录注册
            
            
            
        点击 登录注册 即表示同意《亿速云用户服务条款》
        # .agg()和.apply()方法在groupby()方法中怎么用
在Pandas中,`groupby()`是数据分组聚合的核心方法,而`.agg()`和`.apply()`则是实现不同聚合逻辑的关键工具。本文将详细介绍它们的用法、区别及典型场景。
---
## 一、groupby()基础回顾
`groupby()`方法通过指定列名或条件对DataFrame进行分组,返回一个`GroupBy`对象:
```python
import pandas as pd
df = pd.DataFrame({
    'A': ['foo', 'bar', 'foo', 'bar'],
    'B': [1, 2, 3, 4],
    'C': [10, 20, 30, 40]
})
grouped = df.groupby('A')  # 按A列分组
.agg()允许对每个分组同时应用多个聚合函数:
# 对B列求均值,C列求和
result = df.groupby('A').agg({
    'B': 'mean',
    'C': 'sum'
})
输出:
       B   C
A           
bar  3.0  60
foo  2.0  40
可对同一列应用多个函数:
result = df.groupby('A')['B'].agg(['mean', 'max', 'count'])
支持lambda或预定义函数:
df.groupby('A').agg({
    'B': lambda x: max(x) - min(x)
})
.apply()会对每个分组整体应用函数:
# 计算每个分组的极差
def range_calc(group):
    return group.max() - group.min()
df.groupby('A').apply(range_calc)
与.agg()不同,.apply()可以返回多行:
def top_n(group, n=1):
    return group.nlargest(n, 'B')
df.groupby('A').apply(top_n, n=1)
通过group.name获取当前分组的键值:
def add_group_name(group):
    group['Group'] = group.name
    return group
df.groupby('A').apply(add_group_name)
| 特性 | .agg() | .apply() | 
|---|---|---|
| 输入 | 单列或多列的Series | 整个分组的DataFrame/Series | 
| 输出结构 | 自动对齐为规整表格 | 依赖函数返回值 | 
| 性能 | 更高(内部优化) | 较低(逐组处理) | 
| 典型用途 | 快速统计聚合 | 复杂业务逻辑处理 | 
.agg():当需求能用sum/mean等内置函数实现时.apply():在10万行以上数据时可能性能较差# 先聚合再处理
df.groupby('A').agg({'B':'sum'}).apply(lambda x: x*100)
掌握这两种方法的分工与配合,能够高效解决90%以上的分组聚合需求。根据具体场景选择合适工具,是提升Pandas代码质量的关键。 “`
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。