确定10分钟以上的窗口有N行以上的窗口

时间:2019-01-08 20:25:57

标签: python pandas dataframe group-by pandas-groupby

我有一栏熊猫数据框。我想遍历该列并确定在10分钟的窗口中有6个连续的行。或者只是算出在10分钟的窗口中连续6行的次数。

我从字符串转换为时间:

dependencies {

    // Firebase
    implementation 'com.firebase:firebase-client-android:2.5.2'

数据框:

df.iloc[0]

Time   07:19:14
Name: 0, dtype: timedelta64[ns]

因此,它将从上面识别出以下内容:

df
    Time
0   07:19:14
1   07:27:39
2   07:29:14
3   07:29:59
4   09:23:49
5   09:26:44
6   09:26:49
7   09:29:04
8   09:30:14
9   09:35:09
10  09:35:29
11  09:38:09
12  09:40:49
13  09:46:19
14  09:56:04
15  10:08:24
16  10:09:54
17  10:24:14
18  10:45:29
19  10:55:54
20  10:58:34
21  11:00:35
22  11:02:29
23  11:04:04
24  11:04:04
25  11:26:34
26  11:34:00
27  11:52:04
28  11:55:15
29  11:56:19
... ...
62  15:00:54
63  15:01:24
64  15:03:09
65  15:05:04
66  15:05:29
67  15:07:09
68  15:11:24

1 个答案:

答案 0 :(得分:1)

首先将“时间”列转换为Timedelta列,然后使用groupby + ngroup标记组,找到每个组的大小并过滤。

df.Time = pd.TimedeltaIndex(df.Time.astype(str))

v = df.groupby(pd.Grouper(key='Time', freq='10min')).ngroup()
df[v.groupby(v).transform('size').ge(6)]

       Time
62 15:00:54
63 15:01:24
64 15:03:09
65 15:05:04
66 15:05:29
67 15:07:09