在 Python 中为美国日历生成月份的最后一个工作日变量



我想在我的数据帧中创建一个新列,该列等于基于美国日历的月份最后一个工作日,理想情况下采用 mm/dd/yyyy 格式。我的目标是每天创建此变量,并将其设置为与我现有的'DATES'列对应的月份中的每一天。例如,对于一月的每一天,我想创建一个等于'01/31/2020'的变量,采用字符串格式。对于二月的每一天,我想以字符串格式设置一个等于'02/28/2020'的变量。

如果有人有想法会有很大帮助!

数据帧示例

这对我有用

from  datetime import date,timedelta
import datetime
import calendar
today=datetime.date.today()
last = today.replace(day=calendar.monthrange(today.year,today.month)[1])
if last.weekday()<5:
print(last)
else:
print(last-timedelta(days=1+last.weekday()-5))
>>> import datetime
>>> def is_weekend(dt):
return dt.weekday() >= 5
>>> def is_holiday(dt):
return False # You'll need to provide your own definition of holidays
>>> def last_workday(year, month, count=1):
while count > 0:
next_month = month + 1
if next_month <= 12:
next_year = year
else:
next_month = 1
next_year = year + 1
dt = datetime.datetime(next_year, next_month, 1) - datetime.timedelta(days=1)
while is_weekend(dt) or is_holiday(dt):
dt -= datetime.timedelta(days=1)
yield dt
year = next_year
month = next_month
count -= 1
>>> for x in last_workday(2020, 1, 12):
print(x.strftime('%m/%d/%Y'))
01/31/2020
02/28/2020
03/31/2020
04/30/2020
05/29/2020
06/30/2020
07/31/2020
08/31/2020
09/30/2020
10/30/2020
11/30/2020
12/31/2020

最新更新