我有一个包含5列的数据集,其中第一列是visitorId,第二列是datetime,最后一列是searchId。看起来是这样的
|visitorId | datetime |searchId |
|:---------|:---------:|--------:|
| 123 | 2020-06-06| abd |
| 123 | 2020-06-07| cde |
| 123 | 2020-06-08| dgh |
| 123 | 2020-06-18| sdw |
| 123 | 2020-06-21| hkl |
| 345 | 2020-06-21| dsu |
| 456 | 2020-06-06| sdh |
| 456 | 2020-06-20| ckb |
| 456 | 2020-05-24| etw |
我想做的是在另一列中根据每个唯一visitorId的2天间隔标记datetimes。因此,如果我在2020-06-06、2020-06-07、2020-06-08、2020-06-18、2020-06-21上有来自visitor123的5个条目,那么2020-06-06、2020-06-07和2020-06-08将属于一个组,因为它们都在第一个日期(2020-06-06)的两天间隔内,并且分配了一个组标签(0)。2020-06-18将被分配另一个集团标签(1),因为从2020-06-18开始的两天间隔内没有其他日期,同样,2020-06-21将是另一个独特的集团标签(2)。这一过程在新的探视者身上重复。所以我想结束的是
|visitorId | datetime | searchId | group label |
|:---------|:---------:|:--------:|------------:|
| 123 | 2020-06-06| abd | 0 |
| 123 | 2020-06-07| cde | 0 |
| 123 | 2020-06-08| dgh | 0 |
| 123 | 2020-06-18| sdw | 1 |
| 123 | 2020-06-21| hkl | 2 |
| 345 | 2020-06-21| dsu | 0 |
| 456 | 2020-06-19| sdh | 0 |
| 456 | 2020-06-20| ckb | 0 |
| 456 | 2020-07-24| etw | 1 |
| 456 | 2020-08-09| ekn | 2 |
我想我可以用石斑鱼,但我一直没有成功。谢谢你的帮助!(这是用python完成的)
首先对数据帧进行排序,然后我们可以使用
groupby.diff()
编辑。
使用^{} +^{} ,如下所示:
准备:
主要逻辑:
结果:
相关问题 更多 >
编程相关推荐