如何按指定列分组对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
相关产品推荐
相关产品推荐

