我的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名得分, 不是多索引的。
答案 0 :(得分:2)
这里只有一个班轮可以做到这一点-还要考虑到父母只有一个孩子的情况。
df.groupby('parent').apply(lambda df: df.sort_values('score', ascending=False).iloc[:2] if len(df) > 1 else df)
答案 1 :(得分:2)
使用tail
df.sort_values(['parent','score']).groupby('parent').tail(2)
Out[932]:
parent child score
4 O rap 0.298493
2 O Tri 0.306937
5 PV Aer 0.297987
7 PV Bro 0.301921