删除重复项并根据列保留前两个值

时间:2021-04-11 13:09:48

标签: python

我有如下所示的数据框:

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

1 个答案:

答案 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