Python的第一个营业日期

use*_*440 3 python date

如何确定python中该月的第一个营业日期?我正在编写的程序在每个循环中都滴灌日期,因此我需要能够获得true / false。

我发现您可以通过以下方式获得上一个工作日的工作:

import pandas as pd
pd.date_range("2014-01-14", periods=1, freq='BM')
Run Code Online (Sandbox Code Playgroud)

谢谢

shi*_*vsn 6

我认为,您可以使用以下方法获得本月的第一个商务日期BMS

In[82]:pd.date_range('1/1/2000', '12/1/2000', freq='BMS')

Out[82]: 
DatetimeIndex(['2000-01-03', '2000-02-01', '2000-03-01', '2000-04-03',
               '2000-05-01', '2000-06-01', '2000-07-03', '2000-08-01',
               '2000-09-01', '2000-10-02', '2000-11-01', '2000-12-01'],
              dtype='datetime64[ns]', freq='BMS', tz=None)
Run Code Online (Sandbox Code Playgroud)


Ale*_*der 5

这使用美国联邦假日日历。它使用列表推导式遍历介于start_date和之间的月份的每个第一个工作日end_date,然后在属于美国联邦假日或周末的某个天增加一个日期,直到找到有效的工作日期为止。

import datetime as dt
import pandas as pd
from pandas.tseries.holiday import USFederalHolidayCalendar

cal = USFederalHolidayCalendar()
start_date = '2015-1-1'
end_date = '2015-12-31'

def get_business_day(date):
    while date.isoweekday() > 5 or date in cal.holidays():
        date += dt.timedelta(days=1)
    return date

>>> first_bday_of_month = [get_business_day(d).date() 
                           for d in pd.date_range(start_date, end_date, freq='BMS')]
[datetime.date(2015, 1, 2),
 datetime.date(2015, 2, 2),
 datetime.date(2015, 3, 2),
 datetime.date(2015, 4, 1),
 datetime.date(2015, 5, 1),
 datetime.date(2015, 6, 1),
 datetime.date(2015, 7, 1),
 datetime.date(2015, 8, 3),
 datetime.date(2015, 9, 1),
 datetime.date(2015, 10, 1),
 datetime.date(2015, 11, 2),
 datetime.date(2015, 12, 1)]

>>> cal.rules
cal.rules
[Holiday: New Years Day (month=1, day=1, observance=<function nearest_workday at 0x10c593578>),
 Holiday: Dr. Martin Luther King Jr. (month=1, day=1, offset=<DateOffset: kwds={'weekday': MO(+3)}>),
 Holiday: Presidents Day (month=2, day=1, offset=<DateOffset: kwds={'weekday': MO(+3)}>),
 Holiday: MemorialDay (month=5, day=31, offset=<DateOffset: kwds={'weekday': MO(-1)}>),
 Holiday: July 4th (month=7, day=4, observance=<function nearest_workday at 0x10c593578>),
 Holiday: Labor Day (month=9, day=1, offset=<DateOffset: kwds={'weekday': MO(+1)}>),
 Holiday: Columbus Day (month=10, day=1, offset=<DateOffset: kwds={'weekday': MO(+2)}>),
 Holiday: Veterans Day (month=11, day=11, observance=<function nearest_workday at 0x10c593578>),
 Holiday: Thanksgiving (month=11, day=1, offset=<DateOffset: kwds={'weekday': TH(+4)}>),
 Holiday: Christmas (month=12, day=25, observance=<function nearest_workday at 0x10c593578>)]
Run Code Online (Sandbox Code Playgroud)