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

如何使用Pandas的groupby对连续重复行按列求和?

解决Pandas中连续重复行按列求和的问题

核心思路

要实现对连续重复的type行按value列求和,关键是先生成一个「连续分组标识」——给每一段连续相同的type分配唯一组号,再用这个标识分组求和。

分步实现

  1. 创建示例DataFrame
import pandas as pd

data = {
    'type': ['profit', 'profit', 'loss', 'profit', 'profit', 'loss', 'loss', 'loss'],
    'value': [11, 10, -5, 50, 15, -30, -25, -10]
}
df = pd.DataFrame(data)
  1. 生成连续分组标识
    通过对比当前行与上一行的type是否不同,累计生成组号:
group_ids = df['type'].ne(df['type'].shift()).cumsum()

这段代码会输出:[1,1,2,3,3,4,4,4],对应每一段连续的type组。

  1. 分组求和并整理结果
    用生成的组号分组,提取每组的type(取第一个即可,同组type一致),对value求和:
result = df.groupby(group_ids).agg(
    type=('type', 'first'),
    grand=('value', 'sum')
).reset_index(drop=True)

最终结果

type  grand
0  profit     21
1    loss     -5
2  profit     65
3    loss    -65

对您之前代码的说明

您之前使用cumcount()是统计每组内的行数,换成sum()就能得到每组的求和值。核心区别是:直接按type分组会合并所有相同type的行(不管是否连续),而用「连续分组标识」才能只合并连续重复的行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 04:36:03