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

如何统计DataFrame中独立连续事件的数量?

统计DataFrame中独立连续事件的数量

你可以用pandas内置方法直接实现需求,步骤如下:

  1. 识别连续事件的分界点
    用ne()方法判断当前行事件与上一行是否不同,shift()用于获取上一行数据,返回的布尔值中True代表新的连续事件开始。

  2. 生成连续事件分组ID
    对分界点的布尔值做累加(cumsum()),每个连续事件段会被分配唯一的分组ID。

  3. 统计各事件的独立连续段数量
    按事件分组后,统计每组对应的唯一分组ID数量,就是目标结果。

完整代码示例

import pandas as pd

df = pd.DataFrame([1, 2, 2, 2, 1, 1, 1, 1, 2, 1], columns=["events"])

# 生成连续事件分组ID
df['group_id'] = df['events'].ne(df['events'].shift()).cumsum()

# 统计每个事件的独立连续段数量
result = df.groupby('events')['group_id'].nunique().reset_index(name='count')

print(result)

运行结果:

events  count
0       1      3
1       2      2

简洁写法

如果不想新增列,也可以用一行代码完成:

result = df['events'].ne(df['events'].shift()).cumsum().groupby(df['events']).nunique().reset_index(name='count')

关键方法说明

  • ne():等价于!=,判断当前值与上一行值是否不等,是识别连续事件切换的核心。
  • cumsum():将分界点的True(视为1)累加,生成唯一的连续事件分组标识。
  • nunique():统计每个事件对应的分组ID数量,即独立连续事件的个数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 17:19:51