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

Pandas Groupby分组如何同时对不同列使用sum求和与mean求均值

实现方法

完全可以直接实现,你只需要使用pandas的agg()方法为不同列指定不同的聚合规则即可,不需要拆分DataFrame再拼接。

基础写法(列数量少的场景)

直接给每个数值列指定对应聚合逻辑:

final_df = df.groupby([
    pd.Grouper(freq="60min", key="ds"), 
    "name"
]).agg(
    val1=("val1", "mean"),  # val1取分组均值
    val2=("val2", "sum"),   # val2取分组求和
    val3=("val3", "mean")   # val3取分组均值
).reset_index()

末尾加的reset_index()是为了把分组用的ds、name从索引转回普通列,和你预期的输出格式对齐,不需要索引格式的话可以去掉这部分。

批量写法(列数量多的场景)

如果除了val2之外其他所有数值列都要取均值,不需要手动逐个指定,批量生成聚合规则即可:

# 初始化所有非分组列默认使用均值聚合
agg_rule = {col: "mean" for col in df.columns if col not in ["ds", "name"]}
# 单独修改val2的聚合规则为求和
agg_rule["val2"] = "sum"

final_df = df.groupby([
    pd.Grouper(freq="60min", key="ds"), 
    "name"
]).agg(agg_rule).reset_index()

以上两种写法最终的输出结果和你给出的预期样例完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 22:57:04