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

如何在Python中对DataFrame列的连续数值进行计数?

实现方法

直接通过分组+累计计数的方式就能实现需求,完整代码如下:

import pandas as pd
import numpy as np

np.random.seed(150)
df = pd.DataFrame(data={'a':[1,2,3,4,5,15,16,17,18,203,204,205],'b':np.random.randint(50000,size=(12))})

# 生成连续数值段的分组标签
df['group'] = (df['a'].diff() != 1).cumsum()
# 对每个分组生成从1开始的顺序计数
df['c'] = df.groupby('group').cumcount() + 1
# 移除中间分组列(可选)
df = df.drop('group', axis=1)

print(df)

步骤解释:

  • 生成分组标签:df['a'].diff()计算列a相邻元素的差值,当差值不等于1时,说明当前行属于新的连续段,返回布尔序列。再用cumsum()将布尔值转为连续的分组编号(True视为1,False视为0),这样每个连续数值段会被分配同一个编号。
  • 生成顺序计数:通过groupby('group')按连续段分组,cumcount()会在每个分组内从0开始计数,加1后就得到从1开始的顺序数,也就是需求中的列c。
  • 清理中间列:如果不需要分组标签列,可以用drop移除,最终结果和预期完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 01:24:29