#python #pandas #dataframe #group-by #pandas-groupby
Вопрос:
Я загружаю csv-файл, и в нем три столбца: столбец с датой и временем, столбец со значением и еще один «данные». Примеры строк:
value data Date-Time
0 2 a 2019-3-18 23:11:00
1 3 b 2019-10-24 21:00:12
2 1 c 2019-1-10 23:00:00
3 2 d 2019-4-18 23:11:00
4 1 e 2019-1-1 23:00:00
Я хочу сгруппировать по значению, если мы получим дубликаты по значению, необходимо извлечь запись на основе последней записи даты и времени, она должна выглядеть следующим образом.
value data date
0 1 c 2019-1-10 23:00:00
1 2 d 2019-04-18 23:11:00
2 3 b 2019-10-24 21:00:12
df["date"] = pd.to_datetime(df["date"])
df = df.sort_values("date").groupby(['value'], as_index=False).first()
print(df)
Ответ №1:
Использовать sort_values
и drop_duplicates
:
# Convert 'Date-Time' column to datetime64
# df['Date-Time'] = pd.to_datetime(df['Date-Time'])
>>> df.sort_values('Date-Time')
.drop_duplicates('value', keep='last')
.sort_values('value')
value data Date-Time
2 1 c 2019-01-10 23:00:00
3 2 d 2019-04-18 23:11:00
1 3 b 2019-10-24 21:00:12