Pandas: как удалить дубликаты, сохранив строку с максимальным значением


Вы можете использовать следующие методы для удаления дубликатов в DataFrame pandas, но сохраните строку, содержащую максимальное значение в определенном столбце:

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

 df. sort_values (' var2 ', ascending= False ). drop_duplicates (' var1 '). sort_index ()

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

 df. sort_values (' var3 ', ascending= False ). drop_duplicates ([' var1 ', ' var2 ']). sort_index ()

Следующие примеры показывают, как использовать каждый метод на практике.

Пример 1. Удалите дубликаты в столбце и сохраните строку с Максом.

Предположим, у нас есть следующий DataFrame pandas, содержащий информацию об очках, набранных баскетболистами разных команд:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C'],
                   ' points ': [20, 24, 28, 30, 14, 19, 29, 40, 22]})

#view DataFrame
print (df)

  team points
0 to 20
1 to 24
2 to 28
3 B 30
4 B 14
5 B 19
6 C 29
7 C 40
8 C 22

Мы можем использовать следующий синтаксис, чтобы удалить строки с повторяющимися названиями команд , но сохранить строки с максимальными значениями очков :

 #drop duplicate teams but keeps row with max points
df_new = df. sort_values (' points ', ascending= False ). drop_duplicates (' team '). sort_index ()

#view DataFrame
print (df_new)

  team points
2 to 28
3 B 30
7 C 40

Каждая строка с повторяющимся названием команды была удалена, но строки с максимальным значением баллов для каждой команды были сохранены.

Пример 2. Удалите дубликаты в нескольких столбцах и сохраните строку с Максом.

Предположим, у нас есть следующий DataFrame pandas:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C'],
                   ' position ': ['G', 'G', 'F', 'G', 'F', 'F', 'G', 'G', 'F'],
                   ' points ': [20, 24, 28, 30, 14, 19, 29, 40, 22]})

#view DataFrame
print (df)

  team position points
0 AG 20
1 GA 24
2AF 28
3 BG 30
4 BF 14
5 BF 19
6 GC 29
7 GC 40
8 CF 22

Мы можем использовать следующий синтаксис, чтобы удалить строки с повторяющимися названиями команд и позиций , но сохранить строки с максимальными значениями очков :

 #drop rows with duplicate team and positions but keeps row with max points
df_new = df. sort_values (' points ', ascending= False ). drop_duplicates ([' team ',' position ']). sort_index ()

#view DataFrame
print (df_new)

  team position points
1 GA 24
2AF 28
3 BG 30
5 BF 19
7 GC 40
8 CF 22

Каждая строка с повторяющимся названием команды и позиции была удалена, но строки с максимальным значением очков были сохранены для каждой комбинации команды и позиции.

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные операции в pandas:

Как удалить повторяющиеся строки в Pandas
Как удалить повторяющиеся столбцы в Pandas
Как посчитать дубликаты в пандах

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *