Отбрасывание дублирующегося значения в столбце зависит от значения другого - PullRequest
0 голосов
/ 14 апреля 2020

Я не был уверен, как лучше ответить на мой вопрос. Предположим, у меня есть фрейм данных

id    decision
1     Yes
3     No
2     Yes
2     No
4     No
4     No

. Я хочу удалить дубликаты на основе столбца идентификатора, чтобы в каждом типе идентификатора был только один экземпляр. Однако для идентификаторов с несколькими экземплярами, если любое из значений в решении - «Да», то после удаления дубликатов решение для оставшегося будет «Да».

Так что в этом случае вывод выглядело бы примерно так, потому что по крайней мере одно из решений для совпадения идентификатора 2 было Да.

id    decision
1     Yes
3     No
2     Yes
4     No

Я искал использовать drop_duplicates (), но я принимаю решение о том, какой дубликат оставить только на основе первый или последний экземпляр, потому что они в разных порядках.

Любая помощь?

Ответы [ 2 ]

1 голос
/ 14 апреля 2020

IIU C

s=df.sort_values('decision').drop_duplicates('id',keep='last').sort_index()
   id decision
0   1      Yes
1   3       No
2   2      Yes
5   4       No
0 голосов
/ 14 апреля 2020

Нечто подобное может работать (хотя и не сохраняет порядок) -

import pandas as pd
df = pd.DataFrame({'id':[1,3,2,2,4,4], 'decision':['Yes', 'No', 'Yes', 'No', 'No', 'No']})
df 
    id decision
0   1      Yes
1   3       No
2   2      Yes
3   2       No
4   4       No
5   4       No

df.sort_values(['id', 'decision'], ascending=[True, False]).drop_duplicates(['id'], keep='first')
    id decision
0   1      Yes
2   2      Yes
1   3       No
4   4       No
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...