如何使用pandas分组后对不同列执行不同聚合操作
实现方法
首先先确保你的date字段已经转换为Pandas日期类型,避免按字符串比较日期出现错误:
import pandas as pd # 转换日期字段格式 df['date'] = pd.to_datetime(df['date'])
核心分组聚合代码
使用Pandas的命名聚合语法,一次完成分组后的多字段不同规则聚合:
res = df.groupby('transaction', as_index=False).agg( date = ('date', 'max'), # 取每个分组的最晚日期 cash = ('cash', 'sum') # 对每个分组的cash字段求和 )
如果需要把输出的日期格式调整为年/月/日的格式,可以额外添加一行代码:
res['date'] = res['date'].dt.strftime('%Y/%m/%d')
低版本Pandas兼容方案
如果你的Pandas版本低于0.25,不支持命名聚合语法,可以用字典传参的方式实现相同效果:
res = df.groupby('transaction', as_index=False).agg({ 'date': 'max', 'cash': 'sum' })
运行后得到的结果完全符合预期,transaction为2的分组对应cash求和值为25,date为最晚的2020/1/5。
内容的提问来源于stack exchange,提问作者Yeti
相关产品推荐
相关产品推荐

