Contar conjuntos de valores verdaderos consecutivos en una columna.
Digamos que tengo un dataframe como sigue:
df = pd.DataFrame({‘A’:[1,1,1,1,1,0,0,1,1,0,1,1,1,1,1,0,0,0,0,0,1,1]})
Luego, lo convierto en una forma booleana:
df.eq(1)
Out[213]:
A
0 True
1 True
2 True
3 True
4 True
5 False
6 False
7 True
8 True
9 False
10 True
11 True
12 True
13 True
14 True
15 False
16 False
17 False
18 False
19 False
20 True
21 True
Lo que quiero es contar conjuntos consecutivos de valores True en la columna. En este ejemplo, la salida sería:
df
Out[215]:
A count
0 1 5.0
1 1 2.0
2 1 5.0
3 1 2.0
4 1 NaN
5 0 NaN
6 0 NaN
7 1 NaN
8 1 NaN
9 0 NaN
10 1 NaN
11 1 NaN
12 1 NaN
13 1 NaN
14 1 NaN
15 0 NaN
16 0 NaN
17 0 NaN
18 0 NaN
19 0 NaN
20 1 NaN
21 1 NaN
Mi progreso ha sido utilizando herramientas como ‘groupby’ y ‘cumsum’, pero francamente no puedo resolverlo. Gracias de antemano.
davy.ai
Una forma de resolver este problema es crear una nueva columna que representa los grupos de valores True consecutivos usando la función
cumsum()
. Luego, agrupa el dataframe por esta nueva columna y cuenta el número de filas en cada grupo. Finalmente, utiliza la funcióntransform()
para aplicar esta cuenta a cada fila del dataframe original.El dataframe resultante debe tener una columna ‘count’ que representa el número de valores True consecutivos en cada grupo: