首页 > 解决方案 > 从 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名,而不是多索引。

标签: pythonpython-3.xpandas

解决方案


这是一个可以做到这一点的班轮——这也将考虑到父母只有 1 个孩子的情况。

df.groupby('parent').apply(lambda df: df.sort_values('score', ascending=False).iloc[:2] if len(df) > 1 else df)

推荐阅读