У меня есть такой фрейм

   name
    a
    s
    d
    a
    s
    d
    f
    a
    s
    a
    s

Мне нужно, наконец, получить верхние 3 значения на основе количества значений. Я получил значения счетчиков. Я использовал, data2['name'].value_counts(sort=True,ascending=False). Но вместо количества значений мне нужны эти три верхних значения имени. т.е.

[a,s,d]
1
qwww 21 Сен 2018 в 13:33

2 ответа

Лучший ответ

Функция Series.value_counts имеет значение по умолчанию параметры sort=True и ascending=False, поэтому их следует опустить. Затем отфильтруйте значения index путем индексации и преобразуйте их в list:

L = data2['name'].value_counts().index[:3].tolist()
print (L)
['a', 's', 'd']

Другое решение:

from collections import Counter
L = [i for i, j in Counter(data2['name']).most_common(3)]
print (L)
['a', 's', 'd']
1
jezrael 21 Сен 2018 в 10:40

Вы также можете использовать Series.nlargest, поэтому сортировка аргументов не имеет значения:

data2['name'].value_counts().nlargest(3).index
1
Chris A 21 Сен 2018 в 10:40