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

如何基于DataFrame列按指定记录数生成递增rank值?

问题:如何生成DataFrame中自定义间隔递增的"rank"列

需求:生成"rank"列,该列每N条记录递增1(N可自定义,示例中N=2),示例数据表如下:

Monthsrank
11
21
32
42
53
63
74
84

解决方案

以下是几种Python Pandas的实现方式:

方法1:整数除法实现固定间隔

假设间隔为interval=2,通过对索引做整数除法生成rank列:

import pandas as pd

df = pd.DataFrame({'Months': range(1,9)})
interval = 2
df['rank'] = (df.index // interval) + 1

说明:索引从0开始,df.index // interval会让每interval条记录得到相同整数,加1后得到从1开始递增的rank值。

方法2:groupby+ngroup实现固定间隔

也可通过分组方式生成:

interval = 2
df['rank'] = df.groupby(df.index // interval).ngroup() + 1

方法3:处理动态间隔

如果间隔不是固定值(比如间隔列表为intervals=[2,3,1,2],即前2条rank=1、接下来3条rank=2,依此类推),可以用如下方式:

intervals = [2,3,1,2]
rank_list = []
current_rank = 1
for cnt in intervals:
    rank_list.extend([current_rank]*cnt)
    current_rank += 1
df['rank'] = rank_list[:len(df)]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 18:13:13