我有一只熊猫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)
请让我知道更好的方法
答案 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)]