Как удалить дубликат из фрейма данных с учетом значения другого столбца

#python #pandas #dataframe

#python #pandas #фрейм данных

Вопрос:

Когда я отбрасываю John дубликат, указывая «name» в качестве имени столбца:

 import pandas as pd   
data = {'name':['Bill','Steve','John','John','John'], 'age':[21,28,22,30,29]}
df = pd.DataFrame(data)
df = df.drop_duplicates('name')
 

pandas удаляет все совпадающие объекты, оставляя самый левый:

    age   name
0   21   Bill
1   28  Steve
2   22   John
 

Вместо этого я хотел бы сохранить строку, в которой возраст Джона самый высокий (в этом примере это возраст 30 лет. Как этого добиться?

Комментарии:

1. попробуйте это: df.drop_duplicates('name', keep='last') или df.sort_values('age').drop_duplicates('name', keep='last')

Ответ №1:

Попробуйте это:

 In [75]: df
Out[75]:
   age   name
0   21   Bill
1   28  Steve
2   22   John
3   30   John
4   29   John

In [76]: df.sort_values('age').drop_duplicates('name', keep='last')
Out[76]:
   age   name
0   21   Bill
1   28  Steve
3   30   John
 

или это в зависимости от ваших целей:

 In [77]: df.drop_duplicates('name', keep='last')
Out[77]:
   age   name
0   21   Bill
1   28  Steve
4   29   John
 

Комментарии:

1. Отлично! Сортировка была бы решением здесь с keep равным значением last. Спасибо!