对于下面的数据框,找到前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
非常感谢!
答案 0 :(得分:1)
您可以尝试将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
答案 1 :(得分:0)