Найти вторую самую последнюю дату во фрейме данных панд

1

У меня есть данные, например:

  1. Sampled_Date
  2. 8/29/2017
  3. 8/29/2017
  4. 8/29/2017
  5. 2/28/2016
  6. 2/28/2016
  7. 5/15/2014

Etc.. Теперь я могу найти максимальные и минимальные даты как

df.Sampled_Date.max()
df.Sampled_Date.min()

Но как найти вторую самую последнюю дату. т.е. 2/28/2016 в кадре данных pandas Python.

Теги:
pandas

2 ответа

1
Лучший ответ

Вы также можете использовать .argsort()

import pandas as pd

# Generate dates
dates = pd.Series(pd.date_range(start='1/1/2017', periods=5, freq=pd.offsets.MonthEnd(3)))

# Random order
dates = dates.sample(frac=1, random_state=0)

# Get the second 'max' date
dates[dates.argsort() == (len(dates)-2)] # 3   2017-10-31
  • 0
    Спасибо, это сработало в моем случае. :-)
2

Удостоверьтесь, что ваши даты указаны в датах:

df['Sampled_Date'] = pd.to_datetime(df['Sampled_Date'])

Затем отбросьте дубликаты, возьмите nlargest(2) и возьмите последнее значение:

df['Sampled_Date'].drop_duplicates().nlargest(2).iloc[-1]

# Timestamp('2016-02-28 00:00:00')

Ещё вопросы

Сообщество Overcoder
Наверх
Меню