python - 从 df 中的一列相对于另一列值获取前 2 个分数
问题描述
我的df:
parent child score
0 O Tel 0.294015
1 O The 0.296218
2 O Tri 0.306937
3 O nal 0.290132
4 O rap 0.298493
5 PV Aer 0.297987
6 PV Arc 0.277228
7 PV Bro 0.301921
8 PV CAS 0.286482
我想喜欢:
0 O Tri 0.306937
1 O rap 0.298493
2 PV Aer 0.297987
3 PV Bro 0.301921
需要获得父母与孩子的前2名,而不是多索引。
解决方案
这是一个可以做到这一点的班轮——这也将考虑到父母只有 1 个孩子的情况。
df.groupby('parent').apply(lambda df: df.sort_values('score', ascending=False).iloc[:2] if len(df) > 1 else df)
推荐阅读
- r - 使用 dcast 然后 melt 不会产生我开始使用的表(data.table 方法)
- apache - .htaccess 匹配文件,即使 URL 中没有扩展名
- java - 由于 bean 命名冲突,Spring Boot 应用程序无法运行
- amazon-web-services - 处理 Amazon ECS(蓝/绿)部署失败
- matlab - 如何导出包含多页图形的 PDF?
- html - 如何
在 pug 文件中使用? - ssl - 如何找到 Kubernetes 终止 SSL 的请求的原始协议(或端口)?
- c++ - 为什么禁止在外部声明中限定名称?
- javascript - 我已经使用 append 添加了 HTML 代码,但是这个新代码不再执行 javascript
- python - Dlib 库未安装在 Anaconda 上