Pandas groupby, чтобы найти среднее количество категорийных полей - PullRequest
0 голосов
/ 28 мая 2020

Работа с кадром данных pandas, попытка получить среднее количество одного поля, сгруппированного по другому. У меня есть приведенный ниже фрейм данных

user_id    tag_number
----------------------
1             xx
1             xx
1             xy
2             xy
2             zz
2             zz
2             zz

. Я пытаюсь получить среднее количество tag_number на уникальные tag_number, сгруппированные по user_id. Я могу сделать data.groupby(["user_id", "tag_number"]).size(), чтобы получить следующий результат

user_id  tag_number
-------------------------
1        xx            2
         xy            1
2        xy            1
         zz            3

, но я ищу

user_id   avg_tag_number_count
------------------------------
1          1.5

2          2.0

, потому что для пользователя 1 существует всего 3 экземпляра tag_number между 2 уникальные tag_numbers. А для пользователя 2 существует всего 4 экземпляра tag_number между 2 уникальными tag_numbers.

1 Ответ

1 голос
/ 28 мая 2020

Вам понадобится это:

data.groupby(["user_id", "tag_number"]).size().groupby(level=0).mean().reset_index().rename(columns={0: 'avg_tag_number_count'})

Вывод:

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