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

如何高效为pandas DataFrame重复列值生成历史出现次数计数列

高效实现方案

pandas 提供了原生的向量化方法来实现这个需求,仅需一行代码即可完成,效率远高于手动遍历iterrows:

import pandas as pd
data = {'1':[1, 1, 1, 2, 2, 3, 4, 4, 4, 4]}
df = pd.DataFrame(data)
# 直接生成分组序号,完全匹配需求
df['uniquee'] = df.groupby('1').cumcount()

方案说明

  • groupby('1')会将1列取值相同的行划分为同一个分组
  • cumcount()方法会保留原表的行顺序,对每个分组内的行从0开始依次生成序号,正好匹配「统计当前行对应值此前出现次数」的需求:第一次出现计数为0,第二次为1,以此类推,运行结果和你给出的预期结果完全一致。

效率优势

  • 底层为C实现的向量化运算,不需要逐行遍历Python对象,对于10万行以上的数据集,运算速度比iterrows实现快100~1000倍,数据量越大性能优势越明显。
  • 代码简洁易维护,不需要手动维护计数字典和逐行赋值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 17:45:04