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

Pandas中列值重新从1开始时如何实现持续递增计数

你可以基于已计算的diff列,通过标记相邻值变化的位置再累加得到目标new_col,完整实现代码如下:

import pandas as pd
d = {'col1': [1,2,3,3,1,2,2,3,4,1,1,2]}
df= pd.DataFrame(data=d)
# 你已实现的差值计算步骤
df['diff'] = df['col1'].diff()
# 新增逻辑:标记值发生变化的位置,累加标记得到new_col
df['new_col'] = (df['diff'] != 0).cumsum()

如果你不需要保留中间diff列,也可以合并成一行代码实现:

df['new_col'] = (df['col1'] != df['col1'].shift()).cumsum()

实现逻辑说明

  • 核心判断逻辑:只要col1的取值和上一行不同(无论数值变大、变小还是变回1),就给当前位置标记为True(对应数值1),否则标记为False(对应数值0)
  • 对标记序列执行累加(cumsum)操作后,连续相同值的位置不会触发累加,因此new_col取值保持一致,值变化时累加+1,完全符合你要求的不重置、持续递增规则

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 04:57:02