我正在尝试将旅行持续时间的数据集(从0到inf)每隔5分钟进行一次分组。我该怎么办?
我的示例dataFrame看起来像:
Duration
0 00:01:37
1 00:18:19
2 00:22:03
3 00:41:07
4 00:11:54
5 00:21:34
我使用了以下代码:df.groupby([pd.Grouper(key='Duration', freq='5T')]).size()
我发现以下结果:
Duration
00:01:37 1
00:06:37 0
00:11:37 1
00:16:37 2
00:21:37 1
00:26:37 0
00:31:37 0
00:36:37 1
00:41:37 0
Freq: 5T, dtype: int64
我的预期结果是:
Duration Counts
00:00:00 0
00:05:00 1
00:10:00 0
00:15:00 1
00:20:00 1
........ ...
我希望索引将从00:00:00
而不是00:01:37
开始。
或者,显示垃圾箱也对我有用,我的意思是:
Duration Counts
0-5 1
5-10 0
10-15 1
15-20 1
20-25 2
........ ...
请帮助我。谢谢。
答案 0 :(得分:1)
首先,您需要花时间降低第5分钟的时间。然后简单地数一下。 我想这就是您要寻找的-
def round_to_5min(t):
""" This function rounds a timedelta timestamp to the nearest 5-min mark"""
t = datetime.datetime(1991,2,13, t.hour, t.minute - t.minute%5, 0)
return t
data['new_col'] = data.Duration.map(round_to_5min).dt.time