выбор строк фрейма данных (datetimeindex) по списку datetime.date

#python #pandas #datetime #dataframe #datetimeindex

#python #pandas #datetime #фрейм данных #datetimeindex

Вопрос:

df выглядит следующим образом:

 DateTime
2017-07-10 03:00:00    288.0
2017-07-10 04:00:00    306.0
2017-08-10 05:00:00    393.0
2017-08-10 06:00:00    522.0
2017-09-10 07:00:00    487.0
2017-09-10 08:00:00    523.0
2017-10-10 09:00:00    585.0
  

Вопрос, как выбрать строку, которая находится в списке дат:

 ['2017-07-10', '2017-09-10']
  

чтобы иметь:

 DateTime
2017-07-10 03:00:00    288.0
2017-07-10 04:00:00    306.0
2017-09-10 07:00:00    487.0
2017-09-10 08:00:00    523.0
  

Спасибо

Ответ №1:

Учитывая, что даты в вашем списке содержат информацию вплоть до ежедневной, вы могли бы начать с того, что Series.dt.floor ) DatetimeIndex увеличили isin до ежедневного уровня и индексировали список объектов datetime с помощью,,:

 t = [pd.to_datetime('2017-07-10'), pd.to_datetime('2017-09-10')]
df.index= pd.to_datetime(df.index)

df[df.index.floor('d').isin(t)]
  

Вывод

    DateTime
2017-07-10 03:00:00     288.0
2017-07-10 04:00:00     306.0
2017-09-10 07:00:00     487.0
2017-09-10 08:00:00     523.0
  

Комментарии:

1. например? мы все еще можем использовать средство доступа к дате, верно?

Ответ №2:

Предполагая, что Datetime является индексом, попробуйте выполнить следующее:

 to_search=['2017-07-10', '2017-09-10']
df[df.index.to_series().dt.date.astype(str).isin(to_search)]
  

                         1
DateTime                  
2017-07-10 03:00:00  288.0
2017-07-10 04:00:00  306.0
2017-09-10 07:00:00  487.0
2017-09-10 08:00:00  523.0