用两个条件替换重复项

时间:2019-04-29 08:30:22

标签: python pandas dataframe

我要根据以下条件用NaN替换重复项:
ID和代码重复。如果代码不同,请保留。
例如:

ID  Code
1   A10
1   A10
1   A10
1   E39
1   I24
2   O32
2   K94
3   E39

我尝试过:

df.loc[df['ID'].duplicated(), 'Code'] = np.nan

但是它只保留第一个代码并替换任何其他代码。我希望只有在ID和代码与其他实例匹配的情况下才能替换代码。

所需的输出:

ID  Code
1   A10
1   NaN
1   NaN
1   E39
1   I24
2   O32
2   K94
3   E39

1 个答案:

答案 0 :(得分:1)

通过同时指定两列来使用DataFrame.duplicated

df.loc[df.duplicated(['ID','Code']), 'Code'] = np.nan
#alternatives
#df['Code'] = df['Code'].mask(df.duplicated(['ID','Code']))
#df['Code'] = np.where(df.duplicated(['ID','Code']), np.nan, df['Code'])
print (df)
   ID  Code
0   1   A10
1   1   NaN
2   1   NaN
3   1   E39
4   1   I24
5   2   O32
6   2   K94
7   3  E830