복붙노트

[PYTHON] 주어진 날짜와 가장 가까운 날짜 찾기

PYTHON

주어진 날짜와 가장 가까운 날짜 찾기

배열에 datetime 개체가 있는데 배열의 어떤 요소가 주어진 날짜와 가장 가까운 지 (예 : datetime.datetime (2014,12,16))를 찾고 싶습니다.

이 게시물은 주어진 날짜 이전이 아닌 가장 가까운 날짜를 찾는 방법을 보여줍니다. 이 코드를 변경하여 주어진 날짜 이전의 날짜를 반환 할 수 있습니까?

예를 들어 배열에 datetime.datetime (2014,12,10) 및 datetime.datetime (2014,12,28) 요소가있는 경우 이전 항목은 datetime.datetime (2014,12,16)에 가장 근접하므로 반환해야합니다. )를 절대 값으로 나타냅니다.

해결법

  1. ==============================

    1.이 함수는 날짜 피벗에 가장 가까운 항목에서 datetime을 반환합니다.

    이 함수는 날짜 피벗에 가장 가까운 항목에서 datetime을 반환합니다.

    def nearest(items, pivot):
        return min(items, key=lambda x: abs(x - pivot))
    

    좋은 부분은 유형이 비교, 뺄셈 및 복근을 지원하는 경우 상자 밖에서 날짜 / 시간과 다른 유형에서도 작동합니다 (예 : 숫자 및 벡터 유형).

  2. ==============================

    2.이 링크 링크에 대한 응답으로 'truncate'기능이 있습니다.

    이 링크 링크에 대한 응답으로 'truncate'기능이 있습니다.

    df.truncate (before = '2012-01-07')

    또는 '가장 가까운'옵션과 함께 get_loc을 사용할 수 있습니다.

    df.iloc[df.index.get_loc(datetime.datetime(2016,02,02),method='nearest')]
    
  3. ==============================

    3.

    def nearestDate(base, dates):
        nearness = { abs(base.timestamp() - date.timestamp()) : date for date in dates }
        return nearness[min(nearness.keys())]
    
  4. ==============================

    4.값 대신 가장 가까운 인덱스를 찾는 내 솔루션

    값 대신 가장 가까운 인덱스를 찾는 내 솔루션

    def nearest_ind(items, pivot):
        time_diff = np.abs([date - pivot for date in items])
        return time_diff.argmin(0)
    
  5. ==============================

    5.가장 가까운 날짜를 찾고 timedelta (두 날짜의 차이)를 반환하려면 다음을 수행했습니다.

    가장 가까운 날짜를 찾고 timedelta (두 날짜의 차이)를 반환하려면 다음을 수행했습니다.

    def nearest_date(items,pivot):
        nearest=min(items, key=lambda x: abs(x - pivot))
        timedelta = abs(nearest - pivot)
        return nearest, timedelta
    

    이것은 내가했던 것처럼 앱에 대한 근접성에 대한 최소 임계 값이있을 때 유용 할 수 있습니다.

  6. from https://stackoverflow.com/questions/32237862/find-the-closest-date-to-a-given-date by cc-by-sa and MIT license