繁体   English   中英

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

[英]Generate last business day of the month variable in Python for US Calendar

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

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

Dataframe 示例

这对我有用

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM