我有以下 Dataframe :
+------------+------------------+--------------------+
|id. |install_time_first| timestamp|
+------------+------------------+--------------------+
| 2| 2022-02-02|2022-02-01 10:03:...|
| 3| 2022-02-01|2022-02-01 10:00:...|
| 2| 2022-02-02| null|
| 3| 2022-02-01|2022-02-03 11:35:...|
| 1| 2022-02-01| null|
| 2| 2022-02-02|2022-02-02 10:05:...|
| 3| 2022-02-01|2022-02-01 10:05:...|
| 4| 2022-02-02| null|
| 1| 2022-02-01|2022-02-01 10:05:...|
| 2| 2022-02-02|2022-02-02 10:05:...|
| 4| 2022-02-02|2022-02-03 11:35:...|
| 1| 2022-02-01| null|
| 1| 2022-02-01|2022-02-01 10:03:...|
| 1| 2022-02-01|2022-02-01 10:05:...|
| 4| 2022-02-02|2022-02-03 11:35:...|
| 2| 2022-02-02|2022-02-02 11:00:...|
| 4| 2022-02-02|2022-02-03 11:35:...|
| 3| 2022-02-01|2022-02-04 11:35:...|
| 1| 2022-02-01|2022-02-01 10:00:...|
+------------+------------------+--------------------+
我想按install_time_first
对 Dataframe 进行排序,并为每个用户(所有事件)添加索引,并保持顺序。
+------------+------------------+--------------------+-----+
|id. |install_time_first| timestamp|index|
+------------+------------------+--------------------+-----+
| 1| 2022-02-01| null| 1|
| 1| 2022-02-01| null| 1|
| 1| 2022-02-01|2022-02-01 10:00:...| 1|
| 1| 2022-02-01|2022-02-01 10:03:...| 1|
| 1| 2022-02-01|2022-02-01 10:05:...| 1|
| 1| 2022-02-01|2022-02-01 10:05:...| 1|
| 3| 2022-02-01|2022-02-01 10:00:...| 2|
| 3| 2022-02-01|2022-02-01 10:05:...| 2|
| 3| 2022-02-01|2022-02-03 11:35:...| 2|
| 3| 2022-02-01|2022-02-04 11:35:...| 2|
| 2| 2022-02-02| null| 3|
| 2| 2022-02-02|2022-02-01 10:03:...| 3|
| 2| 2022-02-02|2022-02-02 10:05:...| 3|
| 2| 2022-02-02|2022-02-02 10:05:...| 3|
| 2| 2022-02-02|2022-02-02 11:00:...| 3|
| 4| 2022-02-02| null| 4|
| 4| 2022-02-02|2022-02-03 11:35:...| 4|
| 4| 2022-02-02|2022-02-03 11:35:...| 4|
| 4| 2022-02-02|2022-02-03 11:35:...| 4|
+------------+------------------+--------------------+-----+
我怎么能做到呢?我不能做到这一点,并保持它的排序
1条答案
按热度按时间eeq64g8w1#
这里的关键观察是"index"列具有相同的"id"列值,但按"install_time_first"排序,查看此问题的一种方法是在(install_time_first,id)上分区/orderBy,并为每对分配一个unque索引,我做了两个解决方案,第一个使用连接,第二个使用windows,并使用了一些技巧,我更喜欢第一个解决方案,因为第二个可能性能繁重:
两者给出相同的结果: