You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pandas中按多列分组并对不同列执行聚合操作?

解决Pandas DataFrame分组聚合的问题

我来帮你搞定这个和SQL对应的分组聚合需求~你想要的是按Letter和From分组后,对Price求和、对RT取最大值,这和你写的SQL逻辑完全对应,但之前用的sum(['RT','To'])是对指定列做求和操作,既没处理Price,也不是你需要的RT取最大值,所以才没得到预期结果。

正确实现方法

最直接的方式是用Pandas的agg()方法,它支持对不同列指定不同的聚合函数,完美匹配你的SQL需求:

方式1:自定义聚合列名(推荐)

这种方式可以给聚合后的列起更清晰的名字,和SQL里的别名类似:

import pandas as pd

# 假设你的df已经创建好
result = df.groupby(['Letter', 'From']).agg(
    Total_Price=('Price', 'sum'),  # 对Price列求和,结果列名为Total_Price
    Max_RT=('RT', 'max')           # 对RT列取最大值,结果列名为Max_RT
).reset_index()

reset_index()的作用是把Letter和From这两个分组列从索引变回普通数据列,方便后续操作。

方式2:保留原列名

如果你不需要重命名列,也可以用字典格式指定聚合规则:

result = df.groupby(['Letter', 'From']).agg({
    'Price': 'sum',
    'RT': 'max'
}).reset_index()

这种方式得到的结果列名还是Price和RT,值分别是聚合后的求和与最大值。

示例结果

用你提供的测试DataFrame运行上面的代码后,会得到这样的结果:

LetterFromTotal_PriceMax_RT
A2020-06-042911
A2020-06-055611
B2020-06-041211
B2020-06-058911
B2020-06-06111

这个结果和你写的SQL查询返回的内容完全一致~

内容的提问来源于stack exchange,提问作者Ahmed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 06:38:11