我将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
答案 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