ID  values
111 reason1
111 reason2
111 reason3
222 reason2
222 reason4
222 reason5

df.drop_duplicates(["ID"], keep='???', inplace=True)


我知道的方式是使用drop_duplicates,但是它只给我firstlast选项。我想检查是否有reason2,然后将记录与reason2一起保存,否则检查原因3,等等。基本上,有特定的顺序,例如原因2,原因3,原因4等。

最佳答案

根据评论,这可能是实现之一:(实现@brittenb的想法。)

priority_dict = {
    'reason1':1,
    'reason2':2,
    'reason3':3,
    'reason4':4,
    'reason5':5
}
df['priority'] = df['values'].map(priority_dict)
df = df.sort_values(by=['ID', 'priority'])
df.drop_duplicates(['ID'], keep='first')


输出:

     ID values  priority
0   111 reason1 1
3   222 reason2 2

关于python - python按一定顺序删除重复项(不是“first”,“last”),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50708768/

10-12 18:01