pandas
drop_duplicates
Функция отлично подходит для «uniquifying» в dataframe. Тем не менее, одним из ключевых аргументов для передачи является take_last=True
или take_last=False
, хотя я хотел бы отбросить все строки, которые являются дубликатами, в подмножестве столбцов. Это возможно?
A B C
0 foo 0 A
1 foo 1 A
2 foo 1 B
3 bar 1 A
В качестве примера я хотел бы удалить строки, которые совпадают в столбцах, A
и C
поэтому следует удалить строки 0 и 1.
python
pandas
duplicates
Джейми Булл
источник
источник
df.reindex(df.iloc[:,[0,2]].drop_duplicates(keep=False).index)
?df.drop_duplicates(subset=[df.columns[0:2]], keep = False)
Просто хочу добавить ответ Бена на drop_duplicates :
keep
: {'first', 'last', False}, по умолчанию 'first'первый: отбросьте дубликаты за исключением первого вхождения.
последний: удалить дубликаты, кроме последнего вхождения.
False: удалить все дубликаты.
Таким образом, установка
keep
False даст вам желаемый ответ.источник
Если вы хотите, чтобы результат был сохранен в другом наборе данных:
или
Если тот же набор данных необходимо обновить:
Приведенные выше примеры удаляют все дубликаты и сохраняют один, как
DISTINCT *
в SQLисточник
использовать
groupby
иfilter
источник
На самом деле, удаление строк 0 и 1 требует только (любые наблюдения, содержащие совпадающие A и C. сохраняются.):
Но я подозреваю, что вы действительно хотите этого (одно наблюдение, содержащее совпавшие А и С, сохраняется):
Редактировать:
Теперь все намного понятнее, поэтому:
источник
df.drop_duplicates(['A','C'])
в качестве значения по умолчанию, чтобы одно или несколько наблюдений было первым или последним, как я уже упоминал в вопросе - хотя я только что понял, что ключевое слово неправильно, когда я писал по памяти. Я хочу удалить все строки, которые идентичны в интересующих столбцах (A и C в данных примера).Попробуйте эти разные вещи
или
или
источник