我的熊猫数据框“ MSYs”具有一个“ start_yr”变量,该变量是从显示某人开始日期的年份的“日期时间”列中构建的(请注意,“开始日期”的月份和日期也有所不同)。
{{1}}
我想使用start_yr帮助我在另一个列“ Grant Start”中返回日期时间日期,该列显示了该可变年份的八月的第三个星期日。我很沮丧。
答案 0 :(得分:0)
这是对可能帮助您的类似问题的解答。
使用日期时间库。
浏览那年八月的几天子集。
检查是否是星期四。
Python: third Friday of a month
这是基于该线程中答案之一的解决方案。这是一种通用的解决方案,因此您应该可以选择一个月,一周中的一天以及想要的月份中的数字,并获得该日期。
注意:从星期一开始,工作日的索引为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