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

在R语言中为DataFrame新增计数列:随amount递增、随subject重置

多分组下的连续值计数实现

需求说明

现有如下结构的Pandas DataFrame:

subject  amount
1        12
1        12
1        24
2        10
2        10
3        8
3        8
3        9
3        10
4        16
5        13
5        13
5        13
5        27
5        29  
6        23
6        23 

需要新增一列Count,规则为:

  • 当subject变更时,计数重置为1
  • 同一subject下,每当amount发生变化时,计数递增1

最终期望得到的结果如下:

subject  amount   Count 
1        12        1
1        12        1
1        24        2
2        10        1
2        10        1
3        8         1
3        8         1
3        9         2
3        10        3
4        16        1 
5        13        1
5        15        2
5        15        2
5        27        3
5        29        4
6        23        1
6        23        1

解决方案

通过Pandas的分组+连续值标记组合操作即可实现,具体代码如下:

import pandas as pd

# 构造原始数据
data = {
    'subject': [1,1,1,2,2,3,3,3,3,4,5,5,5,5,5,6,6],
    'amount': [12,12,24,10,10,8,8,9,10,16,13,13,13,27,29,23,23]
}
df = pd.DataFrame(data)

# 生成Count列
df['Count'] = df.groupby('subject')['amount'].apply(
    lambda x: (x.diff() != 0).cumsum() + 1
)

print(df)

代码逻辑说明

  • groupby('subject'):按subject分组,保证每个分组内的计数独立重置
  • x.diff() != 0:判断当前行与前一行的amount是否不同,返回布尔值序列(变化为True,不变为False)
  • .cumsum():对布尔值序列累加(True视为1,False视为0),得到累计变化次数
  • +1:将累计值偏移1,让初始计数从1开始

运行代码后即可得到符合要求的结果。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 11:58:12