pandas выбрать топ 2 категории

Имеется датафрейм

data = {'фрукт': ['арбуз','арбуз','арбуз','груша', 'груша', 'вишня', 'абрикос', 'банан'],
'размер': ['1','2','3','5', '6', '10', '5', '7']
}
dates = pd.DataFrame(data, columns = ['фрукт','размер'])

введите сюда описание изображения

Как я могу выбрать записи о двух самых популярных фруктах?

Должен получить

введите сюда описание изображения


Ответы (1 шт):

Автор решения: CrazyElf
dates.loc[dates.фрукт.isin(dates.фрукт.value_counts()[:2].index)]

    фрукт   размер
0   арбуз   1
1   арбуз   2
2   арбуз   3
3   груша   5
4   груша   6

Пояснение:

  • Берём счётчик значений по колонке фрукт, используя value_counts
  • Он отсортирован всегда от больших к меньшим, поэтому берём из него два верхних индекса (в которых и будут собственно фрукты)
  • Выбираем из данных в таблице те строки, у которых значение колонки фрукт входит в отобранный нами ранее список наиболее часто встречающихся фруктов
→ Ссылка