您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# .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进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。