我想根据以下条件用 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
最佳答案
使用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
关于python - 用两个条件替换重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55899584/