Предположим, что ваш Time
столбец уже отсортирован по Time
, как в вашем примере. Если вы хотите, чтобы вывод не имел временной части, как в желаемом вами выводе, вы можете попробовать следующее
(df.groupby(['Card No', df.Time.dt.date], sort=False).nth(0).drop('Time', 1)
.reset_index())
Out[30]:
Card No Time
0 3434 2018-09-17
1 3456 2018-09-17
2 3457 2018-09-17
3 3234 2018-09-17
4 3459 2018-09-17
5 3434 2018-09-20
6 3456 2018-09-20
7 3457 2018-09-20
8 3234 2018-09-20
9 3459 2018-09-20
В противном случае, вы можете попробовать groupby
и head
df.groupby(['Card No', df.Time.dt.date], sort=False).head(1)
Out[41]:
Card No Time
0 3434 2018-09-17 05:19:00
2 3456 2018-09-17 05:58:00
3 3457 2018-09-17 05:59:00
4 3234 2018-09-17 06:00:00
6 3459 2018-09-17 06:20:00
7 3434 2018-09-20 09:35:00
9 3456 2018-09-20 09:41:00
10 3457 2018-09-20 09:41:00
11 3234 2018-09-20 09:43:00
13 3459 2018-09-20 09:46:00