Python 获取基于分组的连续发生次数

Python 获取基于分组的连续发生次数,python,pandas,Python,Pandas,我正试图找到一种方法来获取按主机分组并按时间排序的连续事件组。理想情况下,我需要满足特定treshold和isCorrect==false的组 范例 Time | Host | isCorrect | ------------------------------------- 10:01 | HostA | true | 10:02 | HostB | true | 10:03 | HostA |

我正试图找到一种方法来获取按主机分组并按时间排序的连续事件组。理想情况下,我需要满足特定treshold和
isCorrect==false的组

范例

Time    |   Host    |   isCorrect   |
-------------------------------------
10:01   |   HostA   |   true        |
10:02   |   HostB   |   true        |
10:03   |   HostA   |   false       |
10:15   |   HostA   |   false       |
10:16   |   HostA   |   false       |
10:18   |   HostB   |   false       |
10:20   |   HostA   |   true        |
10:21   |   HostA   |   true        |
10:22   |   HostB   |   false       |
10:23   |   HostB   |   false       |
阈值:>=3

将导致两组

Time    |   Host    |   isCorrect   | Group
--------------------------------------------
10:03   |   HostA   |   false       |1
10:15   |   HostA   |   false       |1
10:16   |   HostA   |   false       |1

10:18   |   HostB   |   false       |2
10:22   |   HostB   |   false       |2
10:23   |   HostB   |   false       |2

我正在阅读,但找不到先按主机分组的方法。

首先通过使用
~
反转掩码和排序值(如有必要)过滤
值,然后使用阈值过滤组,最后通过以下方式创建
列:

如果按连续
False
s分组:

m = ~df['isCorrect']
df['Group'] = df['isCorrect'].cumsum()[m]

df = df[m].sort_values(['Host','Time'])

mask = df.groupby(['Group', 'Host'])['Group'].transform('size') >= 3

df = df[mask].copy()
df['Group'] = pd.factorize(df['Host'])[0] + 1
print (df)
    Time   Host  isCorrect  Group
2  10:03  HostA      False      1
3  10:15  HostA      False      1
4  10:16  HostA      False      1

您所说的:
获取连续发生的组是什么意思?这是在按主机分组后进行的吗?是的,在按主机分组后,主机A可以有3个以上的值?是的,它可以有0到数百个值。我需要至少连续发生3次的所有事件。我如何找到不同的组?因为霍斯塔可能在当天晚些时候有第二批人
m = ~df['isCorrect']
df['Group'] = df['isCorrect'].cumsum()[m]

df = df[m].sort_values(['Host','Time'])

mask = df.groupby(['Group', 'Host'])['Group'].transform('size') >= 3

df = df[mask].copy()
df['Group'] = pd.factorize(df['Host'])[0] + 1
print (df)
    Time   Host  isCorrect  Group
2  10:03  HostA      False      1
3  10:15  HostA      False      1
4  10:16  HostA      False      1