Подсчет частот соответствующих значений в пандах [python 3]

У меня есть набор данных со следующими значениями:

var1  var2 
1234  abc
2345  bcs
5678  csd
1234  abc
1234  bcs
5678  csd
1234  bcs
1234  xyz
1234  abc
9101  zzz

Мне нужно, чтобы каждое уникальное значение в столбце var1 подсчитывало и показывало верхние 3 значения частоты соответствующих значений в var2 и получало выходные данные, например:

var1  var2  count
1234  abc   3
1234  bcs   2
1234  xyz   1
5678  csd   2
9101  zzz   1

Какой самый эффективный способ сделать это?

3 ответа

Решение

Вы должны включить nlargest

df.groupby('var1').var2.apply(lambda x: x.value_counts().nlargest(3)) \
    .reset_index(name='count').rename(columns={'level_1': 'var2'})

   var1 var2  count
0  1234  abc      3
1  1234  bcs      2
2  1234  xyz      1
3  2345  bcs      1
4  5678  csd      2
5  9101  zzz      1
df_a.groupby(['var1','var2'])['var2'].agg({'count':'count'}).reset_index()

Это сработало:

df.groupby(['var1','var2']).count()
Другие вопросы по тегам