我有一个如下所示的PySpark数据框(snap - i可以有多个日期)
UID Time
1 10/1/2016 7:25:52 AM
1 10/1/2016 8:53:38 AM
1 10/1/2016 11:18:50 AM
1 10/1/2016 11:19:32 AM
2 10/1/2016 10:25:36 AM
2 10/1/2016 10:28:08 AM
3 10/1/2016 10:57:41 AM
3 10/1/2016 8:57:10 PM
我想为用户在前一次操作之后最多N小时内执行的每一组操作分配一个唯一标识符。例如,如果时间范围为3小时,则输出应该如下所示:
UID Time GROUP_ID
1 10/1/2016 7:25:52 AM 1
1 10/1/2016 8:53:38 AM 1
1 10/1/2016 11:18:50 AM 1
1 10/1/2016 3:19:32 PM 2
2 10/1/2016 10:25:36 AM 3
2 10/1/2016 10:28:08 AM 3
3 10/1/2016 10:57:41 AM 4
3 10/1/2016 8:57:10 PM 5
有人帮忙吗?
谢谢
1条答案
按热度按时间oug3syen1#
考虑这个问题的一种方法是将时间差除以您想要的间隔,这就得到了一个时间段。
然后,
dense_rank
得到一个连续的组号。结果