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

Pandas groupby.agg如何实现部分列保留原值其余列求和

你当前使用lambda x: x的写法无法生效的核心原因是:groupby后的每个分组对应列是一个Series对象,直接返回原Series的话,agg()无法将其自动解析为聚合后的单行值,因此会不符合预期。

正确实现方式

前提:若同一个ID分组下的Name、Phone取值唯一(这是“保留原值”的默认适配场景),直接使用first聚合函数即可,写法如下:

df.groupby('ID', as_index=False).agg({
    'Name': 'first',
    'Income': 'sum',
    'Phone': 'first'
})

这里加as_index=False是为了让分组键ID保持为普通列,不会被转为索引,更符合常规使用习惯。

特殊场景适配

如果同一个ID下存在多个不同的Name/Phone取值,你希望全部保留的话,可以将对应列的聚合规则改为转为列表:

df.groupby('ID', as_index=False).agg({
    'Name': lambda x: x.tolist(),
    'Income': 'sum',
    'Phone': lambda x: x.tolist()
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 07:21:01