#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. Спасибо!