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

pandas如何为指定列唯一值首次出现生成递增计数器

pandas 唯一值首次出现递增计数实现方案

你之前使用的df.groupby('val').cumcount()返回的是每个分组内部的行序号,会给重复值返回1、2……的组内编号,不符合重复值赋值为0的需求。

实现代码

import pandas as pd

# 示例DataFrame
df = pd.DataFrame({'val': [100, 101, 104, 104, 106, 108, 108, 108]})

# 标记val列首次出现的行
is_first_occurrence = ~df['val'].duplicated()
# 首次出现的行生成递增计数器,其余行赋值为0
df['ctr'] = is_first_occurrence.cumsum().where(is_first_occurrence, 0)

输出结果

val  ctr
0  100    1
1  101    2
2  104    3
3  104    0
4  106    4
5  108    5
6  108    0
7  108    0

逻辑说明

  • df['val'].duplicated()返回布尔序列,重复出现的位置为True,首次出现的位置为False,取反后得到所有首次出现的行标记。
  • cumsum()对布尔值做累加计算(True视为1,False视为0),刚好给首次出现的行按顺序生成1、2、3……的递增序号。
  • where()方法将非首次出现的位置值替换为0,得到目标结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 20:30:03