Удаление дубликатов в Pandas DataFrame по выбранным колонкам
Быстрый ответ
Для удаления дубликатов в DataFrame библиотеки Pandas достаточно использовать метод drop_duplicates()
. Чтобы исключить дубликаты по конкретным столбцам, применяйте аргумент subset
. При использовании keep='first'
сохраняется первое появление дубликата. Вот пример применения этого метода:
import pandas as pd
# Создание DataFrame
df = pd.DataFrame({'A': [1, 1, 2], 'B': [2, 2, 2], 'C': [3, 3, 3]})
# Удаляем дублированные строки
df_unique = df.drop_duplicates()
print(df_unique)
При помощи метода drop_duplicates()
удаляются все последующие дублированные строки, и в итоге DataFrame содержит только уникальные строки.
Подробнее о функции drop_duplicates
Если вы хотите исключить дубликаты по определённым столбцам, используйте параметр subset
:
# Удаляем дубликаты по столбцам 'A' и 'C'
df_unique = df.drop_duplicates(subset=['A', 'C']) # Subset – надежный помощник в работе с дубликатами!
Для полного удаления всех дубликатов, примените keep=False
:
# Удаляем все дублированные строки
df_no_duplicates = df.drop_duplicates(subset=['A', 'C'], keep=False) # С использованием keep=False дубликаты не сохраняются!
Чтобы внести изменения непосредственно в исходный DataFrame, установите inplace=True
:
# Изменяем исходный DataFrame (отменить изменения невозможно!)
df.drop_duplicates(subset=['A', 'C'], keep=False, inplace=True) # Учитывайте важность выбора между влиянием на данные и обязанностью по поддержанию их целостности!
Как справиться с хитрыми дубликатами
Иногда дубликаты могут "маскироваться", создавая иллюзию различия благодаря мелким отличиям. Для их выявления, перед использованием drop_duplicates()
, рекомендуется предварительно обработать данные, убирая лишние пробелы, приводя текст к единому регистру или используя методы текстового сопоставления.
drop_duplicates против SQL
Метод drop_duplicates
по назначению напоминает SQL-команду SELECT DISTINCT *
, так как оба предназначены для выявления уникальных записей. Тем не менее, параметры keep
и subset
придают drop_duplicates
большую гибкость в сравнении с SQL.
Визуализация
Проиллюстрируем DataFrame на примере корзины с фруктами:
Корзина с фруктами (DataFrame):
🍎 Яблоко 1: [Фуджи, Япония, 2022]
🍐 Груша 2: [Бартлетт, США, 2022]
🍎 Яблоко 3: [Фуджи, Япония, 2022] (Дубликат!)
🍊 Апельсин 4: [Валенсия, Испания, 2022]
Удаление дубликатов гарантирует уникальность каждого фрукта в корзине:
После очистки:
🍎 Яблоко 1: [Фуджи, Япония, 2022]
🍐 Груша 2: [Бартлетт, США, 2022]
🍊 Апельсин 4: [Валенсия, Испания, 2022]
В Pandas очистить данные от дубликатов просто:
df.drop_duplicates()
Теперь в вашей корзине только уникальные фрукты! 🎉
Другие средства очистки уникальных данных
В Pandas существуют различные методы для удаления дубликатов. Изучайте их для улучшения своих навыков программирования.
Group by и filter
Когда требуется более сложная логика для исключения дубликатов, вам помогут методы groupby
и filter
. Например, если требуется удалить строки с одинаковыми значениями в столбце 'A' при игнорировании остальных:
# Группируем и фильтруем, чтобы оставить только уникальные значения
df_filtered = df.groupby('A').filter(lambda x: len(x) == 1)
Комбинирование sort_values с drop_duplicates
Используйте комбинацию методов sort_values
и drop_duplicates()
, чтобы после удаления дубликатов сохранились наиболее актуальные данные:
# Сначала сортируем, затем удаляем дубликаты
df_sorted_uniques = df.sort_values(by='A', ascending=True).drop_duplicates(subset=['A'], keep='last')
Возможные проблемы и их решение
Внимательно относитесь к устаревшим параметрам, таким как take_last
и cols
. Следуйте актуальному API, чтобы избежать проблем совместимости. При наличии сомнений всегда консультируйтесь с последней версией документации Pandas.
Полезные материалы
- pandas.DataFrame.drop_duplicates — документация pandas 2.2.0 — Подробная информация о методе
drop_duplicates()
. - Обработка дубликатов — документация pandas 2.2.0 — Расширенная информация о методах обработки дубликатов в Pandas.
- Удаление всех дубликатов строк в Pandas Python по нескольким столбцам – Stack Overflow — Сборник решений вопросов о работе с дубликатами.
- Советы и приёмы работы с Pandas — Статья с полезными рекомендациями.
- Python | Pandas dataframe.drop_duplicates() – GeeksforGeeks — Понятное руководство по использованию метода
drop_duplicates()
от GeeksforGeeks.