python pandas:找到前3个频繁的名字

时间:2018-05-20 05:00:54

标签: python pandas

对于下面的数据框,找到前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 :(得分:1)

您可以尝试将groupbyapplynlargest

一起使用
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

答案 1 :(得分:0)

使用此

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

Here解释得更好。