首页 > 解决方案 > 熊猫在其他数据帧的时间窗口内计数出现次数

问题描述

我有一个具有这种事件模式的数据框

df = {
    '2017-11-28 11:00': 'event1',
    '2017-11-28 11:01': 'event1',
    '2017-11-28 11:02': 'event1', <-----
    '2017-11-28 11:03': 'event2',
    '2017-11-28 11:04': 'event2',
    '2017-11-28 11:05': 'event1',
    '2017-11-28 11:06': 'event1',
    '2017-11-28 11:07': 'event1', <-----
    '2017-11-28 11:08': 'event2',
    '2017-11-28 11:09': 'event2',
    '2017-11-28 11:10': 'event2',
    }

我想要做的是,对于每个event1后跟一个或多个s,计算在指定时间窗口内发生event2的这些 s 的数量,比如在那之后的 3 分钟。箭头表示时间窗口的开始。请问有什么帮助吗?event2event1

标签: pythonpandas

解决方案


看起来你在那里有一个系列。在这种情况下,您可以这样做:

threshold = (s.index.to_series()
  .groupby((s.eq('event1') & s.shift(-1).eq('event2')).cumsum())
  .transform('min') + pd.to_timedelta('3Min')    # adjust threshold here
)

(s.eq('event2') & (s.index < threshold)).sum()
# out 4

推荐阅读