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

如何按连续批次统计DataFrame列中重复值的出现次数?

解决连续批次重复次数统计问题

你可以借助pandas的游程编码分组思路实现需求,具体操作如下:

首先构造示例DataFrame:

import pandas as pd

df = pd.DataFrame({'Value': [0, 0, 0, 1, 1, 0, 0]})

执行以下代码生成Freq列:

# 生成连续相同值的分组标识
df['group_id'] = df['Value'].ne(df['Value'].shift()).cumsum()
# 计算每个分组的长度,将结果映射回原DataFrame
df['Freq'] = df.groupby('group_id')['Value'].transform('count')
# 不需要分组标识的话可以删除该列
df = df.drop('group_id', axis=1)

最终得到的结果:

ValueFreq
03
03
03
12
12
02
02

注:你提供的示例结果最后一行Freq为1应为笔误,原输入最后两个连续0的批次长度实际为2。

原理说明

  • df['Value'].ne(df['Value'].shift()):判断当前行的Value与上一行是否不同,返回布尔值序列
  • .cumsum():对布尔值累加,每遇到一次不同值就生成新的分组ID,让连续相同值被分到同一组
  • groupby('group_id').transform('count'):计算每个分组的长度,并用transform将结果广播到原分组的每一行,实现每行对应所在连续批次的重复次数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 08:59:56