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

如何在Pandas DataFrame中按ID和Date分组对type生成增量计数

解决Pandas按ID和Date分组生成type递增编号的问题

问题分析

你原代码的问题在于groupby([*df])是将所有列作为分组键,这会导致每一行单独成为一个分组,cumcount()返回的始终是0,加1后固定为1,所以每个NEW字段都是type+01,无法实现按ID和Date分组内的递增编号。

正确解决方案

需要按ID、Date、type这三个字段分组,在每个分组内对行进行计数,再将计数格式化为两位数字后与type拼接:

# 按ID、Date、type分组,生成递增编号并格式化
df['NEW'] = df['type'] + df.groupby(['ID', 'Date', 'type']).cumcount().add(1).astype(str).str.zfill(2)

验证结果

运行上述代码后,你的DataFrame会得到期望的结果:

ID  Date    type    NEW
AA  Q1.21   hi      hi01
AA  Q1.21   hi      hi02
AA  Q1.21   hello   hello01
AA  Q1.21   ok      ok01
AA  Q1.21   ok      ok02
AA  Q1.21   ok      ok03
AA  Q2.21   hello   hello01
AA  Q2.21   hello   hello02
BB  Q1.21   hi      hi01
BB  Q1.21   hi      hi02

补充说明

  • cumcount():在每个分组内从0开始对行进行连续计数
  • add(1):将计数从0起始改为1起始,符合你的编号需求
  • str.zfill(2):将数字字符串补零至两位,确保编号格式统一(如1→01,2→02)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 03:31:50