Перейти к последнему прошедшему времени и дате, используя Pandas DateOffset - PullRequest
1 голос
/ 20 сентября 2019

С учетом даты и времени x Я бы хотел вычислить самое последнее предыдущее время с заданным временем (09:00 в моем случае).То есть, если время в x позже, чем 09:00, я хочу получить новое время и дату с той же датой, что и x (и время 09:00), и если время в xраньше, чем 09:00, тогда я хочу получить новую дату и время, указывающие на 09:00 накануне x.

Возможно ли это с помощью pandas.DateOffset?Я пробовал

x + DateOffset(hour=9, minute=0, second=0)

и

x + DateOffset(days=-1, hour=9, minute=0, second=0)

, но первый не работает правильно, если x раньше 09:00 (он перемещает время вперед), ипоследний не работает правильно, если x после 09:00 (он перемещается в предыдущий день).

Я знаю, как сделать это "вручную", но я хотел бы повторно использовать существующий код, которыйзаставит меня сделать это через DateOffset.

Ответы [ 2 ]

1 голос
/ 20 сентября 2019

Вы можете использовать дважды pd.Dateoffset, сначала удалить 9 часов, а затем установить час на 9 с помощью:

df = pd.DataFrame({'a': pd.to_datetime(['2019-09-20 08:34:21', '2019-09-20 09:34:21',])})
print(df.a + pd.DateOffset(hours=-9) + pd.DateOffset(hour=9, minute=0, second=0))
0   2019-09-19 09:00:00
1   2019-09-20 09:00:00
Name: a, dtype: datetime64[ns]
1 голос
/ 20 сентября 2019

Одним из возможных решений являются часы испытаний:

out = x + pd.offsets.DateOffset(hour=9, minute=0, second=0) 
      if x.hour > 9 
      else x + pd.offsets.DateOffset(days=-1, hour=9, minute=0, second=0)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...