У меня есть dataframe, как это
name
a
s
d
a
s
d
f
a
s
a
s
Мне нужно, наконец, получить верхние 3 значения, основанные на подсчете значений. Я получил подсчет значений. Я использовал data2['name'].value_counts(sort=True,ascending=False)
. Но вместо значения count, мне нужны эти три значения имени. т.е.
[a,s,d]
Функция 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']
Вы также можете использовать Series.nlargest
, поэтому аргументы сортировки не будут иметь значения:
data2['name'].value_counts().nlargest(3).index
value_counts()
по умолчанию, поэтомуnlargest
больше не нужно