根据条件删除熊猫行

时间:2020-10-28 03:12:08

标签: python-3.x pandas dataframe

我有一只熊猫DF

     id      number      score          
0   J62      002         100.20         
1   J62      002         8.23           
2   M23      002         36.207         
3   M23      004         83.25         

如果id和number的组合重复,则得分最低的行将被删除。输出应该是

     id      number      score          
0   J62      002         100.20         
1   M23      002         36.207         
2   M23      004         83.25   

如何使用熊猫来完成?

编辑

我的解决方案

df.sort_values('score',ascending = False).drop_duplicates(['id','number'])。reset_index(drop = True)

请让我知道更好的方法

2 个答案:

答案 0 :(得分:1)

以下代码将为您提供帮助

res = df[df['score'].isin(df.groupby(['id','number']).max()['score'].values)]
print(res)

输出:

  id      number      score          
0   J62      002         100.20         
1   M23      002         36.207         
2   M23      004         83.25

答案 1 :(得分:0)

这应该捕获所有场景

    m=df.score.isin(df.groupby(["id", "number"], as_index=False)["score"].min()['score'])
    m1=df.duplicated(subset=['id','number'], keep=False)
    df[~(m&m1)]