【发布时间】:2020-08-27 14:17:12
【问题描述】:
一直在纠结这个问题,还是搞不懂。
在我们的产品上观看直播时,我有一些用户操作日志,我需要能够了解用户观看直播的总时间,减去他们暂停直播的任何时间.
我的数据框看起来像这样(经过一些过滤)
dateHourMinute event user
2 2020-05-01 14:35:00+01:00 play clqj9026
5811 2020-05-01 14:45:00+01:00 pause clqj9026 # -- exclude this
5812 2020-05-01 15:00:00+01:00 play clqj9026 # -- timedelta
5846 2020-05-01 15:01:00+01:00 play clqj9026
6147 2020-05-01 15:07:00+01:00 pause clqj9026
6148 2020-05-01 15:07:00+01:00 play clqj9026
6354 2020-05-01 15:20:00+01:00 pause clqj9026
6355 2020-05-01 15:20:00+01:00 play clqj9026
6392 2020-05-01 15:21:00+01:00 play clqj9026
6505 2020-05-01 15:23:00+01:00 pause clqj9026
6506 2020-05-01 15:23:00+01:00 stopped_watching clqj9026
我想对每对“播放/暂停”事件之间的时间增量求和,但避免包括暂停/播放事件之间的间隔,假设用户此时已关闭流。
该示例显示了连续事件,但我们必须假设存在流暂停且用户正在执行其他操作的实例。此外,我需要忽略依次发生两次的同一事件的实例。我知道我可以做到df.dateHourMinute.diff().sum(),但这并没有考虑到流暂停的时间段。
其次,有没有一种方法可以做到这一点,而无需遍历 user 列中的唯一值来获取每个用户的总观看时间?#
编辑:更改了上表以显示流暂停的间隙。为了澄清上表的总观看时间应该是 33 分钟(注意 14:45 的第一个“暂停”和 15:00 的第二个“播放”事件之间的时间段,我想排除那个时间段) .
【问题讨论】:
标签: python pandas numpy timestamp