#python
#python
Вопрос:
У меня есть фрейм данных df = pd.DataFrame({'col1': ["a","b","c","d","e"], 'col2': [1,3,3,2,6]})
, который выглядит как
Ввод:
col1 col2
0 a 1
1 b 3
2 c 3
3 d 2
4 e 6
Я хотел бы удалить строки из «col1», которые имеют общее значение в «col2». Ожидаемый результат будет выглядеть примерно так…
Вывод:
col1 col2
0 a 1
3 d 2
4 e 6
Каким будет процесс выполнения этого?
Ответ №1:
использование этого короткого кода должно сработать
df.drop_duplicates(subset=['col2'], keep=False)
Объяснение
мы используем drop_duplicates
для (ovbiously) удаления дубликатов, и мы устанавливаем столбцы, из которых мы хотим удалить, на col2
, как вы просили, чтобы удалить все вхождения (и не сохранять, например, первое вхождение каждого дубликата), которые мы используем keep=False
.
Ответ №2:
Это поможет
from collections import Counter
df = pd.DataFrame({'col1': ["a","b","c","d","e"], 'col2': [1,3,3,2,6]})
c = Counter(df['col2'])
ls = [k for k,v in c.items() if v==1]
_fltr = df['col2'].isin(ls)
df.loc[_fltr,:]