РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
34 of 687 menu

Метод drop_duplicates

Метод drop_duplicates применяется к DataFrame и возвращает новый объект с удалёнными дублирующимися строками. По умолчанию метод считает дубликатами строки, где все значения совпадают с другой строкой. Первым параметром можно передать название столбца или список столбцов для проверки дубликатов. Метод оставляет первую встреченную строку из дублирующихся, а остальные удаляет.

Параметр keep определяет, какую из дублирующихся строк оставить: 'first' (первую), 'last' (последнюю) или False (удалить все дублирующиеся строки полностью). Параметр subset принимает список столбцов для сравнения, параметр inplace при значении True изменяет исходный объект.

Синтаксис

df.drop_duplicates([subset], [keep], [inplace])

Пример

Создадим таблицу с дублирующимися строками и удалим их:

import pandas as pd df = pd.DataFrame({ 'a': [1, 1, 2, 2, 3], 'b': [10, 10, 20, 30, 40] }) res = df.drop_duplicates() print(res)

Результат выполнения кода:

a b 0 1 10 2 2 20 3 2 30 4 3 40

Из таблицы удалилась вторая строка, поскольку она полностью дублирует первую.

Пример

Рассмотрим удаление дубликатов с оставлением последней строки:

import pandas as pd df = pd.DataFrame({ 'a': [1, 1, 2, 2], 'b': [10, 10, 20, 30] }) res = df.drop_duplicates(keep='last') print(res)

Результат выполнения кода:

a b 1 1 10 2 2 20 3 2 30

В результате оставили последнюю строку из дублирующихся, а первую удалили.

Пример

Удалим все строки, где дублируются значения в столбце a:

import pandas as pd df = pd.DataFrame({ 'a': [1, 1, 2, 2, 3], 'b': [10, 20, 20, 30, 40] }) res = df.drop_duplicates(subset=['a']) print(res)

Результат выполнения кода:

a b 0 1 10 2 2 20 4 3 40

Метод удалил строки с индексами 1 и 3, так как в столбце a в них были значения 1 и 2, которые уже встречались ранее.

Пример

Удалим все дублирующиеся строки полностью, оставив только уникальные:

import pandas as pd df = pd.DataFrame({ 'a': [1, 1, 2, 2, 3], 'b': [10, 10, 20, 30, 40] }) res = df.drop_duplicates(keep=False) print(res)

Результат выполнения кода:

a b 2 2 20 3 2 30 4 3 40

Строки с индексами 0 и 1 удалились полностью, так как они дублировали друг друга, и метод не оставил ни одну из них.

Пример

Проверим удаление дубликатов на основе нескольких столбцов:

import pandas as pd df = pd.DataFrame({ 'a': [1, 1, 2, 2, 1], 'b': [10, 10, 20, 30, 20], 'c': [100, 100, 200, 300, 400] }) res = df.drop_duplicates(subset=['a', 'b']) print(res)

Результат выполнения кода:

a b c 0 1 10 100 2 2 20 200 3 2 30 300 4 1 20 400

Метод удалил только строку с индексом 1, так как в ней значения столбцов a и b совпадали со строкой с индексом 0.

Пример

Изменим исходный DataFrame с помощью параметра inplace:

import pandas as pd df = pd.DataFrame({ 'a': [1, 1, 2, 3], 'b': [10, 10, 20, 30] }) df.drop_duplicates(inplace=True) print(df)

Результат выполнения кода:

a b 0 1 10 2 2 20 3 3 30

Исходный объект изменился непосредственно, без создания копии. Вторая строка была удалена из таблицы.

Смотрите также

  • метод duplicated,
    который возвращает булеву маску дублирующихся строк
  • метод dropna,
    который удаляет строки с пропущенными значениями
  • метод drop,
    который удаляет указанные столбцы или строки
  • метод replace,
    который заменяет значения в таблице по условию
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить