これは役立つので、計算を実行する必要がある一意のグループの数がわかります。ありがとうございました。
Groupbyオブジェクトがdfgroup
と呼ばれるとします。
documented のように、len(dfgroup)
でグループの数を取得できます。
V0.23の時点で、使用する複数のオプションがあります。まず、セットアップ、
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
Groupby APIの新しいバージョンは、GroupByオブジェクトにグループの数を格納するこの(文書化されていない)属性を提供します。
g.ngroups
# 6
これは、実際にグループ自体を返すGroupBy.groups
とは異なることに注意してください。
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
BrenBarn's answer に示すように、len
オブジェクトでGroupBy
を直接呼び出すか、GroupBy.groups
属性(上記を参照)で呼び出すことができます。
len(g)
# 6
len(g.groups)
# 6
これは GroupBy
オブジェクト属性 で文書化されています。
完全を期すために、groupbyオブジェクトを反復処理して、各グループを明示的にカウントすることもできます。
sum(1 for _ in g)
# 6
あなたは幸運です。そのための関数GroupBy.size
があります。
g.size()
A
a 2
b 2
c 3
d 1
dtype: int64
size
もNaNをカウントすることに注意してください。 NaNをカウントしたくない場合は、代わりにGroupBy.count
を使用してください。