Как получить число групп в объекте groupby в pandas? Это было бы полезно, поэтому я знаю, сколько уникальных групп я должен выполнять вычисления. Спасибо. Предположим, что объект groupby называется dfgroup. Ответ 1 Как документировано, вы можете получить количество групп с len(dfgroup). Ответ 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.
Ответ 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.