首页 > 解决方案 > 使用 Pandas DateOffset 移动到给定时间的最新过去日期时间

问题描述

给定一个日期x时间,我想用给定的时间(09:00在我的例子中)计算最新的前一个日期时间。也就是说,如果 in 的时间x晚于09:00then 我想获得一个新的 datetime,它的日期与x(和 time 的时间09:00)相同,如果 in 的时间x早于09:00then 我想获得一个指向09:00on前一天x

这可以使用pandas.DateOffset吗?我试过了

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

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

但是如果x在之前(它向前移动时间),第一个不能正常工作,如果在之后(它移动到前一天)09:00,后者不能正常工作。x09:00

我知道如何“手动”执行此操作,但我想重用现有代码,这将迫使我通过DateOffset.

标签: pythonpandasdatetime

解决方案


一种可能的解决方案是测试时间:

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)

推荐阅读