Pandas - drop_duplicates具有多个条件

Soy*_*yol 2 python duplicates dataframe pandas

我有一个数据集,我想根据某些条件删除重复项.

例如,假设我有一张桌子

ID  date    group
3001    2010    DCM
3001    2012    NII
3001    2012    DCM
Run Code Online (Sandbox Code Playgroud)

我想说看ID列中的相似ID,如果两个日期相似,则保持该组为NII的行

所以它会成为

ID  date    group
3001    2010    DCM
3001    2012    NII
Run Code Online (Sandbox Code Playgroud)

piR*_*red 6

在布尔数组上使用ilocargsort。确保排序mergesort以确保非易失性排序。

df.iloc[df.group.ne('NII').argsort(kind='mergesort')].drop_duplicates(['ID', 'date'])

     ID  date group
1  3001  2012   NII
0  3001  2010   DCM
Run Code Online (Sandbox Code Playgroud)

这将确保在['ID', 'date']成对组中,行'NII'始终排在最前面。


cs9*_*s95 5

杠杆duplicated在这里:

df[~df.duplicated(['ID', 'date'], keep=False) | df['group'].eq('NII')]

     ID  date group
0  3001  2010   DCM
1  3001  2012   NII
Run Code Online (Sandbox Code Playgroud)