У меня есть набор данных:Панды: в случае повторяющихся значений, удалить строку с определенным значением в другом столбце
id url keep_anyway field
1 A.com Yes X
2 A.com Yes Y
3 B.com No Y
4 B.com No X
5 C.com No X
Я хочу удалить «URL» дублей с условиями:
- Храните дубликаты, если «keep_anyway» = «Да».
- Для дубликатов с «keep_anyway» = «Нет», я хочу сохранить строку с «X» в столбце «поле».
Ожидаемый результат:
id url keep_anyway field
1 A.com Yes X
2 A.com Yes Y
4 B.com No X
5 C.com No X
Я был в состоянии управлять состояние 1 с:
df.loc[(df['keep_aanyway'] =='Yes') | ~df['url'].duplicated()]
Но как установить условие 2?
Обратите внимание, что возможные значения столбца «поле» являются либо X, либо Y, и если у меня есть дубликаты, я знаю, УВЕРЕН, что у меня есть одно «X» и одно значение «Y».
Я подумал, что, может быть, я мог бы сортировать от А до Я в столбце «поле», а затем «keep_first» = True в df.duplicated, но я думаю, что он устарел, не так ли?
вам нужен 'np.where' там? вы не можете просто сделать 'field_bool = df.field == 'X''? – acushner
Да, я изначально пытался получить все в одной строке, отсюда и «np.where». Я собирался их вложить, а затем понял, что условия должны быть «or'ed вместе ... – Kartik
NameError: имя« np »не определено, почему? – Vincent