python - 删除重复项,但保留每组给定列中具有最大值的行
问题描述
我有一个这样的DF:
Name Gender Age Level
Pikachu Male 4 8
Charmander Female 5 7
Charmander Female 5 7
Squirtle Male 3 6
Squirtle Male 3 9
Squirtle Female 4 9
我希望它看起来像这样:
Name Gender Age Level
Pikachu Male 4 8
Charmander Female 5 7
Squirtle Male 3 9
Squirtle Female 4 9
我不知道如何用英语解释我想做什么,所以我会用伪代码来写。
基本上:
If Name, Gender and Age are the same:
If there is a difference in levels:
Keep the row with higher level
If there is a tie:
Keep a random one
任何想法表示赞赏!
解决方案
用sort_values
+检查drop_duplicates
df=df.sort_values('Level').drop_duplicates(['Name','Gender','Age'],keep='last')
df
Name Gender Age Level
2 Charmander Female 5 7
0 Pikachu Male 4 8
4 Squirtle Male 3 9
5 Squirtle Female 4 9
推荐阅读
- python - matplotlib中从右到左的水平条形图
- vba - 如何调整工作表上所有图像的大小?
- c# - 一个数据库和多个数据库中的多个上下文之间的区别
- android - RecyclerView、数据绑定和 ViewModel 没有数据
- policy - 在 APIC 上运行自定义策略时,如何解决“CALL 规则不可操作”错误?
- python - FlaskWTF 多个表单相同的页面,带有 1 个提交按钮
- datastax - dse 图 - 未创建 cassandra 键空间 _pvt
- powershell - 如何“获取”错误处理的异常上下文?
- python - 通过字典和多处理使用时,BackgroundSubtractor 类型不正确
- mysql - MySQL更新时重复主键错误