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
相关产品推荐
相关产品推荐

