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

使用Python datatable按分组生成行号的实现方法

直接使用Python datatable原生的dt.cumcount()分组累计计数函数即可,不需要额外依赖numpy,一行代码就能实现需求:

data[:, dt.update(id = dt.cumcount()), by(f.grp)]

相关说明

  • dt.cumcount()默认在每个分组内从0开始生成递增行序号,和你期望的输出结果完全匹配
  • dt.update是datatable官方推荐的原地新增/修改列的规范写法,相比你之前手动分组计数、拼接numpy数组的实现,逻辑更简洁,执行效率也更高,在处理百万级以上大数据量时优势尤为明显
  • 如果你需要和R data.table的1:.N保持一致从1开始编号,将代码调整为dt.cumcount() + 1即可

执行代码后即可得到你需要的结果:

| grp    value     id
   | str32  int32  int64
-- + -----  -----  -----
 0 | a          2      0
 1 | a          3      1
 2 | b          1      0
 3 | b          2      1
 4 | b          5      2
 5 | b          9      3
 6 | c          2      0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 21:48:03