питон панды: найдите 3 самых частых имени - PullRequest
0 голосов
/ 20 мая 2018

Для приведенного ниже фрейма данных найдите 3 наиболее часто встречающихся имени

Index      Name   
1          Jack     
2          Jack
3          Tom  
4          Tom  
5          Lucy  
6          Lily
7          Lily
The result should be 

  Name      Frequency 
  Jack      2
  Tome      2
  Lily      2

Большое спасибо!

Ответы [ 2 ]

0 голосов
/ 20 мая 2018

Используйте это

df.groupby(['Condition','Name']).size()

Здесь объясните лучше.

0 голосов
/ 20 мая 2018

Вы можете попробовать использовать groupby с apply и nlargest:

result_df = df.groupby('Condition')['Name'].apply(lambda grp: grp.value_counts().nlargest(2)).reset_index()
result_df.columns = ['Condition','Name','Frequency']
print(result_df)

Результат:

  Condition  Name  Frequency
0         a  Jack          2
1         a   Tom          2
2         b  Lily          2
3         b  Lucy          1

Обновление

Для отредактированного вопроса:вероятно, сработает следующее:

df.groupby('Name').size().nlargest(3).to_frame('Frequency')

Результат:

      Frequency
Name           

Jack          2
Lily          2
Tom           2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...