首页 > 解决方案 > python pandas:查找前 3 个常用名称

问题描述

对于下面的数据框,找到前 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

非常感谢!

标签: pythonpandas

解决方案


您可以尝试使用groupbywithapplynlargest

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

推荐阅读