簡體   English   中英

從給定的工作日和月份計算日期,但年份可變(例如,“x”年 8 月的第 3 個星期日)

[英]Calculate date from given weekday and month, but variable year (e.g. 3rd Sunday in August in "x" year)

我的 pandas 數據框“MSYs”有一個“start_yr”變量,它是從日期時間列“開始日期”構建的,顯示某人開始日期的年份(請注意,“開始日期”的月份和日期也有所不同)。

start_yr = pd.DatetimeIndex(MSYs['Start Date']).year

我想使用 start_yr 來幫助我在另一列“Grant Start”中返回日期時間日期,該列顯示該可變年份八月的第三個星期日。 我很難過。

這是對類似問題的回答,可能會對您有所幫助。

使用日期時間庫。

遍歷當年 8 月的幾天子集。

檢查是否是星期四。

Python:一個月的第三個星期五

這是一個基於該線程中的答案之一的解決方案。 這是一個通用的解決方案,因此您應該能夠選擇一個月、星期幾和您想要的月份中的數字並獲得該日期。

注意:工作日從星期一開始為 0 索引。 所以星期天的索引是 6,星期一的索引是 0。所以當你將 day_of_week 提供給這個函數時,確保你選擇 0 到 6 之間的數字。

我已經默認它選擇給定年份的月份的第三個星期日。

import datetime as dt

def get_year_day(year,month=8,day_of_week=6,num_in_month=3):
    ## set up possible ranges
    range_1 = 7*(num_in_month-1)+1
    range_2 = 7*num_in_month+1
    ## loop through possible range in the year and the month
    for i in range(range_1,range_2):
        date = dt.datetime(year=year,month=month, day=i)
        ## if we have our weekday we can break
        if date.weekday()==day_of_week:
            break
    return date

for i in range(2015,2021):

    print(i,get_year_day(i))

2015 2015-08-16 00:00:00
2016 2016-08-21 00:00:00
2017 2017-08-20 00:00:00
2018 2018-08-19 00:00:00
2019 2019-08-18 00:00:00
2020 2020-08-16 00:00:00

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM