#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