Python datetime查找给定日期之前最近的日期。如果没有';如果不存在,请获取最近的日期
我有不同的交易组,每个交易组中都有不同的日期。我想得到给定日期之前最近的日期。但是,如果它不存在,只需获取最近的日期即可。比如说, 假设以下两个示例的给定日期为:Python datetime查找给定日期之前最近的日期。如果没有';如果不存在,请获取最近的日期,python,pandas,numpy,datetime,Python,Pandas,Numpy,Datetime,我有不同的交易组,每个交易组中都有不同的日期。我想得到给定日期之前最近的日期。但是,如果它不存在,只需获取最近的日期即可。比如说, 假设以下两个示例的给定日期为: np.日期时间(2014,12,16) 示例1: 集团内的日期为:np.datetime(2014,12,17),np.datetime(2014,12,15),以及np.datetime(2014,12,14) 返回值应为np.datetime(2014,12,15),因为它是上述给定日期之前最近的日期。我们不仅优先选择给定日期之前
np.日期时间(2014,12,16)
示例1:
集团内的日期为:np.datetime(2014,12,17)
,np.datetime(2014,12,15)
,以及np.datetime(2014,12,14)
返回值应为np.datetime(2014,12,15)
,因为它是上述给定日期之前最近的日期。我们不仅优先选择给定日期之前的日期,而且优先选择最接近该日期的日期
示例2:
集团内的日期为:np.datetime(2014,12,17)
,np.datetime(2014,12,18)
,以及np.datetime(2014,12,19)
返回的值应该是np.datetime(2014,12,17)
,因为给定日期之前没有日期,所以将转换距离上述日期最近的日期
我发现一个函数看起来可以满足第二个示例,但不能满足第一个示例:
def最近(项目、轴):
返回最小值(项目,键=λx:abs(x-轴))
任何帮助都将不胜感激,谢谢 检查
searchsorted
def yourfunc(items,pivot):
items=np.sort(items)
if np.searchsorted(items,s)==0:
return items[np.searchsorted(items,s)]
else :
return items[np.searchsorted(items, s)-1]
yourfunc(ary1,s)
Out[148]: datetime.datetime(2014, 12, 15, 0, 0)
yourfunc(ary2,s)
Out[149]: datetime.datetime(2014, 12, 17, 0, 0)
数据输入
ary1=np.array([pd.datetime(2014,12,17), pd.datetime(2014,12,15), pd.datetime(2014,12,14)])
ary2=np.array([pd.datetime(2014,12,17), pd.datetime(2014,12,18), pd.datetime(2014,12,19)]
s=pd.datetime(2014,12,16)