我有不同的交易组,每个交易组中都有不同的日期。我想获取给定日期之前的最近日期。 但是,如果不存在,请获取最近的日期。例如,
对于以下两个示例,给定日期是:
np.datetime(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 nearest(items, pivot):
return min(items, key=lambda x: abs(x - pivot))
任何帮助将不胜感激,谢谢!
答案 0 :(得分:2)
使用form
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)