Выберите строки с наибольшим значением из группы - PullRequest
0 голосов
/ 19 декабря 2018

У меня есть датафрейм, который содержит некоторую информацию о пользователях.Существует столбец для пользователя, столбец для типа и столбец для подсчета, например:

name         type     count
robert       x        123
robert       y        456
robert       z        5123
charlie      x        442123
charlie      y        0 
charlie      z        42

Я пытаюсь выяснить, какой тип имеет наибольшее количество для имени, поэтому в этом случае яхотел бы выбрать это:

name         type    count
robert       z       5123
charlie      x       442123

Я знаю, что могу сделать что-то вроде этого, чтобы получить максимальное количество для имени, но я не уверен, как я могу включить столбец "тип", который на самом делесамая важная

df.sort_values('count', ascending=False).drop_duplicates('name').sort_index()

Любая помощь с благодарностью!

Ответы [ 2 ]

0 голосов
/ 19 декабря 2018

Что, если у вас есть два максимума для имени с разными типами:

print(df)

      name type   count
0   robert    x     123
1   robert    y     456
2   robert    z    5123
3   robert    a    5123
4  charlie    x  442123
5  charlie    y       0
6  charlie    z      42

Использовать логическое индексирование:

df[df['count'] == df.groupby('name')['count'].transform('max')]

Вывод:

      name type   count
2   robert    z    5123
3   robert    a    5123
4  charlie    x  442123
0 голосов
/ 19 декабря 2018

Попробуйте это

df.loc[df.groupby('name')['count'].idxmax()]['type']

      name type   count
3  charlie    x  442123
2   robert    z    5123

На случай, если вам нужно не только одно максимальное значение, но и верхние n значения для группы, которые вы можете сделать (например, n = 2)

df.loc[df.groupby('name')['count'].nlargest(2).index.get_level_values(1)]

      name type   count
3  charlie    x  442123
5  charlie    z      42
2   robert    z    5123
1   robert    y     456
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...