Панды Python для фильтрации данных на основе диапазона дат в порядке возрастания

#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