获得特定日期的最小和最大时间(以熊猫为单位)

时间:2020-02-20 12:32:49

标签: python pandas

我将start(timestamp)和end(timestamp)分开,我需要获取每个日期的最早开始时间和最后结束时间。

get_if()

我希望每个日期的输出为:日期最小最大

我对Pandas并不陌生,我遇到的大多数解决方案都是从列中查找最小和最大日期时间。虽然我想做的是每个日期的最小和最大日期时间,其中时间戳分布在两列中

预期的输出(请忽略日期和时间格式)

   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

1 个答案:

答案 0 :(得分:4)

我相信您需要先创建一个date列,然后再对groupby执行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'))

输出:

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