Ce serait utile, donc je sais sur combien de groupes uniques je dois effectuer des calculs. Merci.
Supposons que l'objet groupby soit appelé dfgroup
.
Comme documenté , vous pouvez obtenir le nombre de groupes avec len(dfgroup)
.
Depuis la version 0.23, il existe plusieurs options à utiliser. Tout d'abord, la configuration,
df = pd.DataFrame({'A': list('aabbcccd'), 'B': 'x'})
df
A B
0 a x
1 a x
2 b x
3 b x
4 c x
5 c x
6 c x
7 d x
g = df.groupby(['A'])
ngroups
Les versions plus récentes de l'API groupby fournissent cet attribut (non documenté) qui stocke le nombre de groupes dans un objet GroupBy.
g.ngroups
# 6
Notez que ceci est différent de GroupBy.groups
qui renvoie en fait les groupes eux-mêmes:
g.groups
# {'a': Int64Index([0, 1], dtype='int64'),
# 'b': Int64Index([2, 3], dtype='int64'),
# 'c': Int64Index([4, 5, 6], dtype='int64'),
# 'd': Int64Index([7], dtype='int64')}
len
Comme indiqué dans réponse de BrenBarn , vous pouvez soit appeler len
directement sur l'objet GroupBy
, soit sur GroupBy.groups
attribut (illustré ci-dessus).
len(g)
# 6
len(g.groups)
# 6
Cela a été documenté dans GroupBy
attributs d'objet .
Pour être complet, vous pouvez également itérer sur l'objet groupby, en comptant explicitement chaque groupe:
sum(1 for _ in g)
# 6
Tu es chanceux. Nous avons une fonction pour cela, GroupBy.size
.
g.size()
A
a 2
b 2
c 3
d 1
dtype: int64
Notez que size
compte également les NaN. Si vous ne voulez pas que les NaN soient comptés, utilisez GroupBy.count
au lieu.