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

Pandas中根据另一列值的出现次数生成对应序号列的实现方法

实现方法

你可以通过Pandas的分组累计计数功能直接实现需求,代码如下:

import pandas as pd

# 假设你当前操作的DataFrame变量名为df
df['colB'] = df.groupby('colA').cumcount() + 1
df['colB'] = df['colB'].astype(str).str.zfill(3)

也可以合并成一行写:

df['colB'] = df.groupby('colA').cumcount().add(1).astype(str).str.zfill(3)
逻辑说明
  • 先按colA字段分组,相同值的行会被划分到同一组
  • cumcount()方法会对每组内的行按原始顺序从0开始计数,加1后就能得到从1开始的出现次序
  • 最后将数字转为字符串,用zfill(3)方法补零到三位,就得到你要的colB格式
效果验证

你可以用测试数据验证运行结果:

# 构造和你示例一致的测试数据
test_data = {'colA': ['BJ02', 'BJ02', 'CJ02', 'CJ03', 'CJ02', 'DJ01', 'DJ02', 'DJ07', 'DJ07', 'DJ07']}
df = pd.DataFrame(test_data)
df['colB'] = df.groupby('colA').cumcount().add(1).astype(str).str.zfill(3)
print(df)

运行后输出的结果和你给出的示例完全一致。

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

相关产品推荐
方舟 Agent Plan

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

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