我有如下所示的数据框:
parent_id child_id score
0 98 2.6
1 15 1.8
2 98 2.3
3 98 2.7
4 18 3.2
5 15 1.9
6 18 2.3
7 15 2.0
我想删除 child_id 列的重复项并根据他们的分数保留前两个 id,所以我希望最终输出是这样的:
parent_id child_id score
0 98 2.6
3 98 2.7
4 18 3.2
5 15 1.9
6 18 2.3
7 15 2.0
答案 0 :(得分:0)
您可以在 child_id 列中使用 groupby
,在分数列中使用 nlargest(2)
:
>>> df.groupby('child_id')['score'].nlargest(2).reset_index().rename({'level_1':'parent_id'},axis=1).set_index('parent_id').sort_index()
Out[281]:
child_id score
parent_id
0 98 2.6
3 98 2.7
4 18 3.2
5 15 1.9
6 18 2.3
7 15 2.0