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

如何使用pandas的groupby函数按test1列分组生成序列编号列Number

可以用pandas的groupby实现这个需求,核心使用分组对象的cumcount()方法即可快速完成,操作非常简单:

核心代码

# 从1开始生成分组内顺序编号,赋值给新的Number列
df['Number'] = df.groupby('test1').cumcount() + 1

cumcount()默认会按照分组内原始数据的顺序,从0开始生成递增序号,加1就可以得到从1开始的常规编号。

完整可运行示例

你可以直接运行下面的代码看效果,替换成自己的数据源即可:

import pandas as pd

# 模拟和你截图结构一致的示例数据
df = pd.DataFrame({
    'test1': ['a', 'a', 'b', 'b', 'b', 'c'],
    'value': [23, 45, 12, 78, 56, 99]
})

# 生成Number列
df['Number'] = df.groupby('test1').cumcount() + 1
print(df)

运行后输出结果:

test1  value  Number
0     a     23       1
1     a     45       2
2     b     12       1
3     b     78       2
4     b     56       3
5     c     99       1

补充说明

如果你需要先按某列排序后再生成序号,可以先做排序操作再生成编号,比如要按value列从小到大排序后再分组生成序号:

df = df.sort_values(['test1', 'value'], ascending=True)
df['Number'] = df.groupby('test1').cumcount() + 1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 13:09:01