Вот полный пример:
import pandas as pd
import numpy as np
data = '''\
Student,Date
Joe,December 2017
James,January 2018
Bob,April 2018
Joe,December 2017
Jack,February 2018
Jack,March 2018'''
df = pd.read_csv(pd.compat.StringIO(data), sep=',') # <--- Recreate dataframe
print(any(df['Student'].duplicated())) # <--- Prints True
df['Date'] = pd.to_datetime(df.Date) # <--- Do this to get datetime
df = df.sort_values(by='Date').drop_duplicates('Student') # <--- Sort and drop
df['Date'] = df.Date.dt.strftime('%B %Y') # <--- Old date format
print(df)
Возвращает
True
Student Date
0 Joe December 2017
1 James January 2018
4 Jack February 2018
2 Bob April 2018
Очень часто в пандах я бы сказал, что мы заинтересованы в создании логических масок, то есть массивовВерно или неверно, что мы можем использовать, чтобы выбрать подмножество кадра.В этом случае мы могли бы, например, захотеть создать:
m = ~df['Student'].duplicated(keep='first')
# array([ True, True, True, False, True, False])
~ m равно np.invert (m), который переворачивает True на False и наоборот.Очень полезно, чтобы получить без дубликатов в этом случае.Если мы теперь передадим это в фрейм данных как селектор:
df[m]
Мы получим еще раз:
Student Date
0 Joe December 2017
1 James January 2018
2 Bob April 2018
4 Jack February 2018
Прежде, чем я попытался изменить столбец Date на datetime.Это хорошая практика перед выполнением любого типа сортировки даты или любой операции с датой.