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

pandas按索引层级分组后如何生成行的组内相对位置列

pandas 分组生成组内序号的最优实现

你需要的功能可以直接用pandas内置的groupby.cumcount()方法一步完成,完全不需要手动遍历分组,性能更优也符合pandas的惯用写法:

df['event'] = df.groupby(level='userid').cumcount()

逻辑说明

  • groupby(level='userid'):和你现有逻辑一致,按多级索引的第一层级userid进行分组
  • cumcount():会自动生成每个分组内从0开始的顺序序号,正好匹配你需要的组内相对位置需求

如果需要组内序号从1开始,只需要调整为:

df['event'] = df.groupby(level='userid').cumcount() + 1

方案优势

对比你目前使用的循环遍历方案,内置方法的优势非常明显:

  • 代码更简洁,符合pandas矢量化操作的惯用写法
  • 性能更高:数据量达到十万行以上时,速度是手动遍历的几十到上百倍
  • 避免了手动循环赋值可能出现的索引对齐隐患,运行结果和你现有循环输出完全一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 21:18:01