Почему поведение различно для количества и уникально для объектов GroupBy? - PullRequest
0 голосов
/ 05 сентября 2018

У меня есть следующий CSV-файл:

col_1,col_2
foo,1
foo,1
bar,1
bar,2
baz,1
baz,1
baz,2
baz,2
qux,1
qux,2
qux,3

И следующий код (вместе с выходами)

print(df.groupby('col_1').count())
#        col_2
# col_1
# bar        2
# baz        4
# foo        2
# qux        3

print(df.groupby('col_1').nunique())
#        col_1  col_2
# col_1
# bar        1      2
# baz        1      2
# foo        1      1
# qux        1      3

При nunique возвращаются 2 столбца: col_1 и col_2. Почему col_1 отсутствует, когда я звоню count?

1 Ответ

0 голосов
/ 05 сентября 2018

count & nunique - это разные функции и разные вещи.

Ссылки на документацию для дальнейшего чтения:

count возвращает количество не-значений NA для каждой серии в каждой группе.

nunique возвращает количество уникальных не-NA значений для каждой серии в каждой группе


Относительно того, почему nunique реализован таким образом, что столбцы группировки также включены, я не уверен, поскольку в случае использования df.groupby(...).nunique() эта серия будет всегда тривиальной.

В обычном случае столбцы группировки задаются как индекс (если не используется as_index=False), а не дублируются как столбцы в кадре.

Поведение count соответствует ожидаемой groupby apply/agg семантике, а не наоборот.

Однако кто-то написал тест для nunique, где ожидаемый результат также включает в себя столбцы группировки в виде столбцов для as_index=True и as_index=False, как вы заметили.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...