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)
在布尔数组上使用iloc和argsort。确保排序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'始终排在最前面。
杠杆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)