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
相关产品推荐
相关产品推荐

