我想创建新的数据帧(或更新此数据帧)。怎么做
如果用户在一行中有'Date\u start',在另一行中有'Date\u end+1秒',则应将其合并为一行。所以,对于第一个用户XXX,使用下面的数据帧,我希望将前3行合并为一行。
此外,仅当用户及其日期在同一组中时,才应执行此操作
Group Date User Date_start Date_end
1 A 2018-09-20 XXX 2018-09-20 00:01:35 2018-09-20 00:59:59
2 A 2018-09-20 XXX 2018-09-20 01:00:00 2018-09-20 01:59:59
3 A 2018-09-20 XXX 2018-09-20 02:00:00 2018-09-20 02:18:10
4 A 2018-09-20 XXY 2018-09-20 00:00:19 2018-09-20 00:59:59
5 A 2018-09-20 XXY 2018-09-20 01:00:00 2018-09-20 01:09:26
6 B 2018-09-20 XXZ 2018-09-20 00:28:39 2018-09-20 00:59:59
... ... ... ... ... ...
1999996 A 2018-09-20 ZZX 2018-09-20 00:00:08 2018-09-20 00:59:59
1999997 B 2018-09-20 ZZX 2018-09-20 01:00:00 2018-09-20 01:59:59
1999998 A 2018-09-20 ZZY 2018-09-20 00:04:22 2018-09-20 00:59:59
1999999 B 2018-09-20 ZZZ 2018-09-20 00:00:54 2018-09-20 00:59:59
2000000 A 2018-09-20 ZZZ 2018-09-20 01:00:00 2018-09-20 01:59:59
以下是用户XXX应该做的事情(前3行合并成一行):
1 A 2018-09-20 XXX 2018-09-20 00:01:35 2018-09-20 02:18:10
IIUC,这可以使用
groupby
来完成。首先,我将时间从字符串转换为日期时间:其次,使用
groupby
操作生成一个函数来apply
。我们将按User
和Group
分组,以组合它们的时间:最后,
apply
调用函数并重置索引:前5行的输出:
请注意,这并不是利用您提到的“前1秒”方面。我想如果每个
User
&Group
组合,有多个时间序列需要分组。在这种情况下,如果有一个额外的步骤来创建一个新的列来标记要分组的每个时间段,那么仍然可以使用这种方法——这可能不是最简单的操作,但应该是可能的相关问题 更多 >
编程相关推荐