我的目标是:
uniqueIdentity beginTime progrNumber
0 2018-02-07-6253554 17:40:29 1
1 2018-02-07-6253554 17:40:29 2
2 2018-02-07-6253554 17:40:29 3
3 2018-02-07-6253554 17:40:29 4
4 2018-02-07-6253554 17:40:29 5
5 2018-02-07-5555333 17:48:29 2
6 2018-02-07-5555333 17:48:29 3
7 2018-02-07-5555333 17:48:29 4
8 2018-02-07-2345622 18:40:29 1
9 2018-02-07-2345622 18:40:29 2
10 2018-02-07-2345622 18:40:29 3
11 2018-02-07-2345622 18:40:29 4
我的数据集现在:
uniqueIdentity beginTime progrNumber
0 2018-02-07-6253554 17:40:29 1
1 2018-02-07-6253554 17:41:15 2
2 2018-02-07-6253554 17:41:55 3
3 2018-02-07-6253554 17:42:54 4
4 2018-02-07-6253554 17:43:29 5
5 2018-02-07-5555333 17:49:15 2
6 2018-02-07-5555333 17:49:55 3
7 2018-02-07-5555333 17:50:54 4
8 2018-02-07-2345622 18:40:29 1
9 2018-02-07-2345622 18:41:15 2
10 2018-02-07-2345622 18:41:55 3
11 2018-02-07-2345622 18:42:54 4
这意味着: 对于具有相同“uniqueIdentity”的行,“beginTime”应替换为具有相同“uniqueIdentity”的单元格值,“progrNumber”是最小的“progrNumber”。
正如您在评论中提到的,最低的
progrNumber
也将是最低的beginTime
。这意味着您可以使用groupby
和transform
获取每个uniqueIdentity
的最低beginTime
注意,如果
beginTime
是string类型,则只有当它具有一致的格式时,才有效。(例如,“09:40:20”而不是“9:40:20”)使用
groupby
和map
假设
beginTime
对于最小的progrNumber
总是最小的。根据问题的评论,这种情况是正确的在这个答案中,我收集每个
uniqueIdentity
的最小起始时间,然后基于uniqueIdentity
将其映射到原始数据帧这里有另一个使用左连接和一些重命名的选项
结果:
如果不确定
uniqueIdentity
内的哪个记录的时间最短,可以使用groupby
而不是选择progrNumber==1
的位置:并按上述方法进行左连接
相关问题 更多 >
编程相关推荐