Irfan Harun
Irfan Harun

Reputation: 1059

get minimum and maxiumum time for a particular date in pandas

I've separate columns for start( timestamp ) and end( timestamp) and i need to get the earliest starttime and last endtime for each date.

   number               start                 end  test      time
0       1 2020-02-01 06:27:38 2020-02-01 08:29:42     1  02:02:04
1       1 2020-02-01 08:41:03 2020-02-01 11:05:30     2  02:24:27
2       1 2020-02-01 11:20:22 2020-02-01 13:03:49     1  01:43:27
3       1 2020-02-01 13:38:18 2020-02-01 16:04:31     2  02:26:13
4       1 2020-02-01 16:26:46 2020-02-01 17:42:49     1  01:16:03
5       1 2020-02-02 10:11:00 2020-02-02 12:11:00     1  02:00:00

I want the output for each date as : Date Min Max

I'm fairly new to Pandas and most of the solutions i've across is finding the min and max datetime from column. While what i want to do is min and max datetime for each date, where the timestamps are spread over two columns

expected output (ignore the date and time formats please)

date        min     max
1/2/2020    6:27    17:42
2/2/2020    10:11   12:11

Upvotes: 0

Views: 429

Answers (1)

Celius Stingher
Celius Stingher

Reputation: 18377

I believe you need to start by creating a date column and later performing groupby with date.

df['date'] = df['start'].dt.date
df['start_hm'] = df['start'].dt.strftime('%H:%M')
df['end_hm'] = df['end'].dt.strftime('%H:%M')

output = df.groupby('date').agg(min = pd.NamedAgg(column = 'start_hm',aggfunc='min'),
                                max = pd.NamedAgg(column='end_hm',aggfunc='max'))

Output:

              min    max
date                    
2020-02-01  06:27  17:42
2020-02-02  10:11  12:11

Upvotes: 4

Related Questions