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

如何在Pandas DataFrame列中统计连续重复事件的出现次数?

解决连续事件无中断计数的方案

要实现连续相同事件计数、中断后重置的需求,不能直接用RANK()(它会全局统计事件出现次数,不区分连续性),可以通过分组+组内行号的方式实现,核心是把连续相同的事件归为同一组,再在组内生成递增计数。

通用SQL实现(支持MySQL 8.0+、PostgreSQL、SQL Server等)

SELECT 
    Date,
    Event,
    ROW_NUMBER() OVER (PARTITION BY grp ORDER BY Date) AS Count
FROM (
    SELECT 
        Date,
        Event,
        -- 生成分组标识:当前事件与上一行不同时,分组号+1,否则保持
        SUM(CASE WHEN Event = LAG(Event) OVER (ORDER BY Date) THEN 0 ELSE 1 END) 
            OVER (ORDER BY Date) AS grp
    FROM your_table -- 替换成你的表名
) t;

逻辑说明

  1. 内层查询:
    • 用LAG(Event) OVER (ORDER BY Date)获取当前行的上一行事件值
    • 通过CASE判断当前事件是否和上一行相同,不同则返回1,相同返回0
    • 用SUM() OVER (ORDER BY Date)累加这个判断结果,得到分组编号grp——连续相同的事件会被分到同一个grp里
  2. 外层查询:
    • 按grp分区,在每个分区内按Date排序,用ROW_NUMBER()生成从1开始的连续计数,事件中断后新分组会重新从1开始计数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 13:57:09