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

如何在Python中按列分组统计列中连续重复前项的次数?

在Python中按组统计连续重复状态的计数

可以用Pandas的分组和序列操作实现这个需求,以下是完整代码示例:

import pandas as pd

# 构造示例数据
data = {
    'Group': ["AGroup", "AGroup", "AGroup", "AGroup", "BGroup", "BGroup", "BGroup", "BGroup", "CGroup", "CGroup", "CGroup", "CGroup"],
    'Status': ["Low", "Low", "High", "High", "High", "Low", "High", "Low", "Low", "Low", "High", "High"]
}
df = pd.DataFrame(data)

# 生成目标列 CountByGroup
df['CountByGroup'] = df.groupby('Group')['Status'].apply(
    lambda x: x.ne(x.shift()).cumsum().groupby(x.ne(x.shift()).cumsum()).cumcount() + 1
)

# 输出结果
print(df.to_string(index=False))

运行后输出结果与示例完全一致:

Group Status  CountByGroup
 AGroup    Low             1
 AGroup    Low             2
 AGroup   High             1
 AGroup   High             2
 BGroup   High             1
 BGroup    Low             1
 BGroup   High             1
 BGroup    Low             1
 CGroup    Low             1
 CGroup    Low             2
 CGroup   High             1
 CGroup   High             2

代码逻辑拆解

  • 按Group独立分组:以Group列作为分组依据,保证每个组内的统计互不干扰
  • 标记连续重复块:x.ne(x.shift())判断当前行Status是否与上一行不同,返回布尔序列;通过cumsum()累加,将连续相同的Status标记为同一个分组ID
  • 生成连续计数:基于上述分组ID再次分组,用cumcount()+1在每个连续块内生成从1开始的递增计数(cumcount()默认从0起始,加1后符合需求的起始规则)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 09:53:15