我有一个随时间推移的客户数字访问数据框架,格式如下:
|cust_id|datetime|
|1|2020-08-15 15:20|
|1|2020-08-15 16:20|
|1|2020-08-17 12:20|
|1|2020-08-19 14:20|
|1|2020-08-23 09:20|
|2|2020-08-24 08:00|
我想挑出一些强烈的信号,比如:5天内至少拜访3次的顾客。
我最初的想法是,我们必须为每个客户计算所有滑动窗口。
在本例中,我们以cust1为例:
从2020年8月15日开始,到2020年8月19日结束,为期5天,总访问量为4次
从2020年8月16日开始,到2020年8月20日结束,为期5天,总访问量为2
从2020-08-17开始,到2020-08-21结束的5天窗口期,总访问量为2
等。
所有滑动窗口的最大计数为4。因此cust1符合“5天内至少访问3次”的标准
这似乎是一项代价高昂的行动。
你将如何有效地实现这一点?欢迎有其他想法。
1条答案
按热度按时间6qfn3psc1#
您可以转换
datetime
列到long
并在rangebetween()函数中传入相当于5天的秒数。要获得每位客户最多5天的访问次数,您可以执行以下操作: