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

如何用Pandas为连续相同行添加连续计数列

解决Pandas中统计连续相同class值行数的问题

你可以结合已尝试的cumsum分组标识方法,再对分组结果做统计,就能得到连续相同class的行数。具体步骤如下:

1. 构造示例数据(可跳过,直接用你的DataFrame)

import pandas as pd

data = {'class': ['a', 'a', 'a', 'b', 'b', 'c', 'd', 'e', 'e', 'e', 'f', 'a', 'c', 'd', 'd']}
df = pd.DataFrame(data)

2. 生成连续分组标识

用shift()对比当前行与上一行的class值,通过cumsum()为每个连续相同的class段分配唯一ID:

df['group_id'] = (df['class'] != df['class'].shift()).cumsum()

3. 统计每个连续分组的行数

基于生成的group_id分组,用transform('count')将每组的行数赋值给该组的每一行:

df['consecutive_count'] = df.groupby('group_id')['class'].transform('count')

4. 清理临时列(可选)

如果不需要group_id列,可直接删除:

df = df.drop('group_id', axis=1)

最终输出

执行后得到的结果与你的预期一致:

class  consecutive_count
0      a                  3
1      a                  3
2      a                  3
3      b                  2
4      b                  2
5      c                  1
6      d                  1
7      e                  3
8      e                  3
9      e                  3
10     f                  1
11     a                  1
12     c                  1
13     d                  2
14     d                  2

为什么之前的方法不生效?

  • 直接按class分组的groupby统计的是该class在整个DataFrame中的总出现次数,而非连续段的行数;
  • 单独用cumsum仅完成了连续段的分组标识,没有对每个分组的行数做统计,所以需要后续的分组计数步骤。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 21:30:06