Python在序列中查找X之前的最后一个日期

2024-09-27 21:24:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在一个日期序列中找到一个日期,如果找不到,我宁愿选择最新的日期早于这个日期的日期,这是Excel中MATCH函数的思想,您可以选择将MATCH_TYPE设置为0(精确)、-1(小于)和1(大于)。在

但是我在Python中没有找到一个等效的简单方法。在

有人能解释一下吗?在

提前谢谢!在

我根据下面的帮助者找到了自己的解决方案:

def matchLE(to_match,sorted_match_series):
    match_series[~(to_match < match_series)].argmax()

Tags: to方法函数deftypematch序列解决方案
2条回答

这将返回最近的日期(更高或更低):

from datetime import datetime as dt

def find_closest(mydate, dates):
   return min(dates, key=lambda x:abs(x-mydate))

dates = [dt(2014, 1, 1), dt(2014, 1, 10), dt(2014, 1, 18), dt(2014, 1, 31)]

print find_closest(dt(2014, 1, 7), dates)
print find_closest(dt(2014, 1, 15), dates)
print find_closest(dt(2014, 1, 25), dates)

编辑米莎的评论:

要获取最近的较早日期,只需修改find_closest函数:

^{pr2}$

如您所见,这是一个通用函数。您可以向它提供日期、数字或任何其他医嘱内容数据。在

你可以用几行Python来完成这个任务。我是这样做的:

earlier_dates = [d for d in array_of_dates if d <= target_date]
if not earlier_dates:
    raise ValueError("no earlier dates to choose from")
return max(earlier_dates)

相关问题 更多 >

    热门问题