熊猫datetime查找给定日期之前的最近日期。如果不存在,请获取最近的日期

时间:2019-03-17 02:22:36

标签: python pandas numpy datetime

我有不同的交易组,每个交易组中都有不同的日期。我想获取给定日期之前的最近日期。 但是,如果不存在,请获取最近的日期。例如,

对于以下两个示例,给定日期是: 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))

任何帮助将不胜感激,谢谢!

1 个答案:

答案 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)