You need to enable JavaScript to run this app. 如何用Pythonic方式实现Pandas DataFrame连续相同值的迭代计数
优惠活动
大模型
产品
解决方案
定价
更多

如何用Pythonic方式实现Pandas DataFrame连续相同值的迭代计数

解决方案

直接使用Pandas原生的groupby.cumcount()方法即可实现需求,该方法为底层C优化的矢量化操作,无循环开销,适配超大数据量场景。

完整实现代码

import pandas as pd
import numpy as np

# 生成测试数据
df = pd.DataFrame(np.random.randint(0,3, size=(15,4)), columns=list('ABCD'))
# 1. 生成连续相同值分组标签(你原有的实现逻辑正确)
df['subgroupA'] = (df.A != df.A.shift(1)).cumsum()
# 2. 核心逻辑:分组内生成从1开始的递增计数
df['numConsec'] = df.groupby('subgroupA').cumcount() + 1

如果不需要留存subgroupA分组标签,可以简化为一行代码,节省内存:

df['numConsec'] = df.groupby((df.A != df.A.shift()).cumsum()).cumcount() + 1

逻辑说明

  • groupby按连续相同值的分组标签对数据拆分
  • cumcount()返回每个分组内行的序号,默认从0开始计数
  • 末尾加1即可得到从1开始的逐行递增效果,完全匹配预期输出格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 11:06:03