Чтобы найти повторяющиеся строки (дубликаты) в Pandas DataFrame, вы можете использовать функцию pd.df.duplicated(). Pandas.DataFrame.duplicated() — это библиотечная функция, которая находит повторяющиеся строки на основе всех или определенных столбцов и возвращает логический ряд со значением True для каждой дублированной строки.
Синтаксис
|
1 |
DataFrame.duplicated(subset=None, keep='first') |
Параметры
- subset :
- Для проверки дублирования следует использовать метки с одним или несколькими столбцами. Если их не указать, то будут проверены все столбцы на наличие повторяющихся строк.
- keep :
- Он обозначает вхождение, которое должно быть помечено как дубликат. Его значение может быть {«first», «last», False}, а значение по умолчанию — «first».
- first: все дубликаты, кроме их первого появления, будут помечены как True.
- last: все дубликаты, кроме их последнего вхождения, будут помечены как True.
- False: все дубликаты, кроме, будут помечены как True.
- Он обозначает вхождение, которое должно быть помечено как дубликат. Его значение может быть {«first», «last», False}, а значение по умолчанию — «first».
Пример
Давайте создадим образец DataFrame, содержащий повторяющиеся значения.
|
1 2 3 4 5 6 7 8 9 10 |
import pandas as pd series = [('Stranger Things', 3, 'Millie'), ('Game of Thrones', 8, 'Emilia'),('La Casa De Papel', 4, 'Sergio'), ('Westworld', 3, 'Evan Rachel'),('Stranger Things', 3, 'Millie'), ('La Casa De Papel', 4, 'Sergio')] # Create a DataFrame object dfObj = pd.DataFrame(series, columns=['Name', 'Seasons', 'Actor']) print(dfObj) |
Выход
|
1 2 3 4 5 6 7 8 |
python3 app.py Name Seasons Actor 0 Stranger Things 3 Millie 1 Game of Thrones 8 Emilia 2 La Casa De Papel 4 Sergio 3 Westworld 3 Evan Rachel 4 Stranger Things 3 Millie 5 La Casa De Papel 4 Sergio |
Как видите, приведенный выше фрейм данных содержит повторяющиеся строки.
Нахождение повторяющихся строк на основе всех столбцов
Чтобы найти и выбрать дубликат всех строк, основанных на всех столбцах, вы можете вызвать Daraframe.duplicate() без аргумента подмножества.
Он вернет логический ряд с True в каждой дублированной строке, кроме их первого появления(значение аргумента keep по умолчанию — «first»). Затем передайте эту логическую серию оператору [] Dataframe, чтобы выбрать повторяющиеся строки.
Пример
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
import pandas as pd series = [('Stranger Things', 3, 'Millie'), ('Game of Thrones', 8, 'Emilia'),('La Casa De Papel', 4, 'Sergio'), ('Westworld', 3, 'Evan Rachel'),('Stranger Things', 3, 'Millie'), ('La Casa De Papel', 4, 'Sergio')] # Create a DataFrame object dfObj = pd.DataFrame(series, columns=['Name', 'Seasons', 'Actor']) # Find a duplicate rows duplicateDFRow = dfObj[dfObj.duplicated()] print(duplicateDFRow) |
Выход
|
1 2 3 |
Name Seasons Actor 4 Stranger Things 3 Millie 5 La Casa De Papel 4 Sergio |
Здесь возвращаются все повторяющиеся строки, кроме их первого вхождения, потому что значение по умолчанию для аргумента сохранения было «first».
Чтобы выбрать все повторяющиеся строки, кроме их последнего вхождения, мы должны передать аргумент сохранения как «last».
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
import pandas as pd series = [('Stranger Things', 3, 'Millie'), ('Game of Thrones', 8, 'Emilia'),('La Casa De Papel', 4, 'Sergio'), ('Westworld', 3, 'Evan Rachel'),('Stranger Things', 3, 'Millie'), ('La Casa De Papel', 4, 'Sergio')] # Create a DataFrame object dfObj = pd.DataFrame(series, columns=['Name', 'Seasons', 'Actor']) # Find a duplicate rows duplicateDFRow = dfObj[dfObj.duplicated(keep='last')] print(duplicateDFRow) |
Выход
|
1 2 3 4 |
pyt python3 app.py Name Seasons Actor 0 Stranger Things 3 Millie 2 La Casa De Papel 4 Sergio |
Нахождение повторяющихся строк на основе выбранных столбцов
Чтобы сравнить строки и найти дубликаты на основе выбранных столбцов, мы должны передать список имен столбцов в аргументе подмножества функции Dataframe.duplicate(). Затем она выберет и вернет повторяющиеся строки на основе этих переданных столбцов.
Пример 1
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
import pandas as pd series = [('Stranger Things', 3, 'Millie'), ('Game of Thrones', 8, 'Emilia'),('La Casa De Papel', 4, 'Sergio'), ('Westworld', 3, 'Evan Rachel'),('Stranger Things', 3, 'Millie'), ('La Casa De Papel', 4, 'Sergio')] # Create a DataFrame object dfObj = pd.DataFrame(series, columns=['Name', 'Seasons', 'Actor']) # Find a duplicate rows duplicateDFRow = dfObj[dfObj.duplicated(['Name'])] print(duplicateDFRow) |
Выход
|
1 2 3 4 |
pyt python3 app.py Name Seasons Actor 4 Stranger Things 3 Millie 5 La Casa De Papel 4 Sergio |
Здесь строки с одинаковым значением в столбце «Name» помечаются как дубликаты и возвращаются.
Пример 2
Найдите и выберите строки на основе имен из двух столбцов.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
import pandas as pd series = [('Stranger Things', 3, 'Millie'), ('Game of Thrones', 8, 'Emilia'),('La Casa De Papel', 4, 'Sergio'), ('Westworld', 3, 'Evan Rachel'),('Stranger Things', 3, 'Millie'), ('La Casa De Papel', 4, 'Sergio')] # Create a DataFrame object dfObj = pd.DataFrame(series, columns=['Name', 'Seasons', 'Actor']) # Find a duplicate rows duplicateDFRow = dfObj[dfObj.duplicated(['Name', 'Seasons'])] print(duplicateDFRow) |
Выход
|
1 2 3 4 |
pyt python3 app.py Name Seasons Actor 4 Stranger Things 3 Millie 5 La Casa De Papel 4 Sergio |
