Подтвердить что ты не робот

Как получить число групп в объекте groupby в pandas?

Это было бы полезно, поэтому я знаю, сколько уникальных групп я должен выполнять вычисления. Спасибо.

Предположим, что объект groupby называется dfgroup.

4b9b3361

Ответ 2

Начиная с версии 0.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'])

1) ngroups

Более новые версии API groupby предоставляют этот (недокументированный) атрибут, который хранит количество групп в объекте 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')}  

2) len

Как показано в ответе BrenBarn, вы можете вызывать len непосредственно в объекте GroupBy или в GroupBy.groups (как показано выше).

len(g)
# 6

len(g.groups)    
# 6

Это было задокументировано в GroupBy объекта GroupBy.

3) Генератор Выражение

Для полноты вы также можете перебрать объект 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.