如何在pandas中按分组生成排序后的连续编号列?
实现方法
你可以直接用pandas的groupby+rank方法实现,一行代码即可完成需求:
import pandas as pd # 构造测试用DataFrame,实际使用时替换成你自己的df即可 df = pd.DataFrame({ 'ID': [1,1,1,2,2,2,2], 'Number': [2,1,4,1,3,4,5] }) # 核心逻辑:按ID分组后对Number列生成连续排名 df['Consecutive Number'] = df.groupby('ID')['Number'].rank(method='dense').astype(int)
运行后输出的df就和你期望的结果完全一致。
参数说明
method='dense':指定排名规则为连续排名,即便存在重复值也不会出现排名跳号的情况,符合你要的连续编号需求astype(int):rank方法默认返回浮点类型,加这个方法可以直接转成整数格式,和你示例的输出格式对齐
如果遇到同组内有相同Number值、需要按出现顺序分配不同排名的场景,把method参数改成'first'即可。
内容的提问来源于stack exchange,提问作者user1292919
相关产品推荐
相关产品推荐

