Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 月份的第一个营业日期_Python_Date - Fatal编程技术网

Python 月份的第一个营业日期

Python 月份的第一个营业日期,python,date,Python,Date,如何在python中确定当月的第一个业务日期?我正在编写的程序在每个循环中都是滴灌式的,我需要能够得到一个真/假 我发现您可以通过以下方式获得最后一个工作日: import pandas as pd pd.date_range("2014-01-14", periods=1, freq='BM') 谢谢这使用美国联邦假日日历。它使用列表理解来查看开始日期和结束日期之间的每月第一个工作日,然后在美国联邦假日或周末增加日期,直到找到有效的营业日期 import datetime as dt imp

如何在python中确定当月的第一个业务日期?我正在编写的程序在每个循环中都是滴灌式的,我需要能够得到一个真/假

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

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

谢谢

这使用美国联邦假日日历。它使用列表理解来查看
开始日期
结束日期
之间的每月第一个工作日,然后在美国联邦假日或周末增加日期,直到找到有效的营业日期

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>)]
将日期时间导入为dt
作为pd进口熊猫
从pandas.tseries.holiday导入USFederalHolidayCalendar
cal=USFederalHolidayCalendar()
开始日期='2015-1-1'
结束日期='2015-12-31'
def获取工作日(日期):
当date.isoweekday()大于5或cal.holidays()中的日期时:
日期+=dt.timedelta(天数=1)
返回日期
>>>每月的第一天=[营业日(d).date()
对于pd.date_范围内的d(开始日期、结束日期、频率='BMS')]
[日期时间日期(2015年1月2日),
日期时间。日期(2015年2月2日),
日期时间。日期(2015年3月2日),
日期时间。日期(2015年4月1日),
日期时间。日期(2015年5月1日),
日期时间。日期(2015年6月1日),
日期时间。日期(2015年7月1日),
日期时间。日期(2015年8月3日),
日期时间。日期(2015年9月1日),
日期时间。日期(2015年10月1日),
日期时间。日期(2015年11月2日),
日期时间。日期(2015年12月1日)]
>>>加州规则
加州规则
[假日:元旦日(月=1,日=1,纪念日=),
假日:马丁·路德·金博士(月=1,日=1,偏移量=),
假日:总统日(月=2,日=1,偏移量=),
假日:纪念日(月=5,日=31,偏移量=),
假日:7月4日(月=7日,日=4日,纪念日=),
假日:劳动节(月=9,日=1,抵销=),
假日:哥伦布日(月=10,日=1,偏移量=),
节日:退伍军人节(月=11,日=11,纪念日=),
假日:感恩节(月=11日,日=1日,偏移量=),
假日:圣诞节(月=12,日=25,纪念日=)]

我认为,通过以下方法,您可以获得当月的第一个营业日期:


“工作日”是指工作日还是其他假日日历?工作日不是取决于你居住的国家吗?什么是
pd
event
?因此您需要一个布尔值,以确定一个月的第一天是否为工作日?我指的是美国日历。pd=熊猫,事件只是一个时间戳。我已经编辑了这个问题。
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)