[英]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 月的幾天子集。
檢查是否是星期四。
這是一個基於該線程中的答案之一的解決方案。 這是一個通用的解決方案,因此您應該能夠選擇一個月、星期幾和您想要的月份中的數字並獲得該日期。
注意:工作日從星期一開始為 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.