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

如何按指定列分组对DataFrame列值求和且保持行数不变?

按分组求和并保留原行数的DataFrame处理方案

问题描述

原始数据集:

val1   val2   val3  val4
a1       b      1     c
a1       d      1     k
a2       b      3     c
a2       d      4     k

需求:按val1列分组,对val3列的值求和,同时保留其他列所有值不变,且DataFrame行数与原数据一致。

期望结果:

val1   val2   val3  val4
a1       b      2     c
a1       d      2     k
a2       b      7     c
a2       d      7     k

实现方法

使用pandas的groupby()结合transform()方法即可实现,transform会将分组计算的结果广播到原数据的每一行,完美匹配需求。

代码示例

import pandas as pd

# 构造原始DataFrame
df = pd.DataFrame({
    'val1': ['a1', 'a1', 'a2', 'a2'],
    'val2': ['b', 'd', 'b', 'd'],
    'val3': [1, 1, 3, 4],
    'val4': ['c', 'k', 'c', 'k']
})

# 按val1分组,对val3求和并替换原列
df['val3'] = df.groupby('val1')['val3'].transform('sum')

print(df)

输出结果

val1 val2  val3 val4
0   a1    b     2    c
1   a1    d     2    k
2   a2    b     7    c
3   a2    d     7    k

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 21:20:26