python - 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
非常感谢!
解决方案
您可以尝试使用groupby
withapply
和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
推荐阅读
- azure - 具有特殊 AssignableScopes 的 Azure 自定义 RM 角色定义
- hadoop - 如何设置没有域名的 Kerberos 领域
- symfony - 在 symfony 中重写表单
- excel - 有没有办法强制 ClickOnce 安装将 VSTO 加载项的 LoadBehavoir 设置为“0”
- firebase - 如何使用expo react native app从firebase获取数据
- c++ - 更高效的向量比较
- java - 将 java jar 更改为输出到外部控制台
- c++ - 计算一个单词在 txt 文件中出现的次数
- r - 根据列值,每个分组列只保留一行
- python - 带有表单和对象的 Django 视图