【发布时间】:2019-11-20 12:47:34
【问题描述】:
如何根据特定条件为在 pandas 数据框中创建的组分配唯一 ID。 例如:我有一个名为 df 的数据框,其结构如下:Name 标识用户,datetime 标识用户访问资源的日期/时间。
Name Datetime
Bob 26-04-2018 12:00:00
Claire 26-04-2018 12:00:00
Bob 26-04-2018 12:10:00
Bob 26-04-2018 12:30:00
Grace 27-04-2018 08:30:00
Bob 27-04-2018 09:30:00
Bob 27-04-2018 09:40:00
Bob 27-04-2018 10:00:00
Bob 27-04-2018 10:30:00
Bob 27-04-2018 11:30:00
我想为用户创建会话,以便为具有相同名称和日期时间值的用户访问资源不超过 30 分钟分配一个唯一会话。但是,如果用户在访问资源时显示某些不活动超过 30 分钟,则同一用户将被分配不同的会话以供下次用户访问资源时使用。
我的预期输出将如图所示。
用户 Bob 于 2018 年 4 月 27 日,在 9.30 访问资源,第二次 @ 9.40,第三次 @ 10.00,第四次 @10.30 -> 都使用会话 4。但是下次用户 Bob 访问 @ 11.30 所以时差超过 30 分钟,因为 Bob 已经超过 30 分钟不活动,所以下一个会话将分配给他。
Name Datetime Id
Bob 26-04-2018 12:00:00 1
Claire 26-04-2018 12:00:00 2
Bob 26-04-2018 12:10:00 1
Bob 26-04-2018 12:30:00 1
Grace 27-04-2018 08:30:00 3
Bob 27-04-2018 09:30:00 4
Bob 27-04-2018 09:40:00 4
Bob 27-04-2018 10:00:00 4
Bob 27-04-2018 10:30:00 4
Bob 27-04-2018 11:30:00 5
感谢您的帮助! 上一个问题的链接:How to compare value of second column with same values of first column in pandas dataframe?
【问题讨论】:
-
也刚刚意识到这似乎与您的其他问题相同,只是有一个更好的示例(此处)。 @SergeBallesta 在他对唯一标签组的回答中提供了正确的逻辑。我的解决方案结果非常相似,只是稍微紧凑一些,并且没有合并。您可以考虑在那里接受他的解决方案,或者作为副本关闭。
标签: python pandas datetime pandas-groupby