Заменить дубликаты двумя условиями - PullRequest
1 голос
/ 29 апреля 2019

Я хочу заменить дубликаты на NaN, исходя из следующих условий:
Идентификатор и код являются дубликатами.Если код отличается, сохраните его.Например:

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  Code
1   A10
1   NaN
1   NaN
1   E39
1   I24
2   O32
2   K94
3   E39

1 Ответ

1 голос
/ 29 апреля 2019

Используйте 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...