python - tablas - recorrer data frame pandas
¿Cómo obtener el número de grupos en un grupo por objeto en pandas? (2)
Esto sería útil, así que sé cuántos grupos únicos tengo para realizar cálculos. Gracias.
Supongamos que el objeto groupby se llama dfgroup
.
Como se documented , puede obtener el número de grupos con len(dfgroup)
.
Preparar
df
A B C D
0 foo one 0.075964 2.132502
1 bar one -1.061731 0.025212
2 foo two 0.753592 0.031765
3 bar three 0.379773 0.996792
4 foo two 0.297801 1.059324
5 bar two -1.400107 -0.651873
6 foo one -1.084224 0.243731
7 foo three -3.181693 -0.413512
g = df.groupby([''A'', ''B''])
Solución
A partir de v0.23, hay dos métodos.
ngroups
Las versiones más recientes de la API groupby proporcionan este atributo (no documentado) que almacena el número de grupos en un objeto GroupBy.
g.ngroups
6
len
Delegados a GroupBy.__len__
para recuperar el número de grupos.
len(g)
6
Apéndice
Si está buscando encontrar el tamaño de cada grupo, puede usar dfGroupBy.size
:
g.size()
A B
bar one 1
three 1
two 1
foo one 2
three 1
two 2
dtype: int64
Tenga en cuenta que el size
cuenta con NaN. Si no desea que se cuenten los NaN, use g.count()
lugar.
Y por último, también está la opción de value_counts
través de df.groupby(''A'').B.value_counts()
que da el mismo resultado exacto que g.count()
pero hace el agrupamiento en una columna en lugar de dos.