Pandas在两次约会之间产生每周的第一个和最后一个工作日

2024-05-15 09:18:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图找出一种方法来在两个日期之间生成每周的第一个和最后一个工作日,例如2016-01-01和{}。在

考虑到在美国有很多周我们有很长的周末从Friday开始,或者延长到{},找到所有星期一和星期五的日期不是一个可行的逻辑。如果Monday是假日,Tuesday将是第一个营业日,Friday是假日,Thursday将是最后一个营业日。在

我可以使用pandas date_range函数来生成两个日期之间的所有天数,但除此之外我似乎无法计算。在


Tags: 方法函数pandasdaterange逻辑monday天数
1条回答
网友
1楼 · 发布于 2024-05-15 09:18:05

您好,此代码应该可以解决以下问题:

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

dr = pd.date_range(start='2016-01-01', end='2017-02-28')
cal = USFederalHolidayCalendar()
holidays = cal.holidays(start=dr.min(), end=dr.max())
A = dr[~dr.isin(holidays)]  # make sure its not US holiday
B = A[A.weekday != 5]    # make sure its not saturday
B = B[B.weekday != 6]    # make sure its not saturday

for year in set(B.year):    # for every year in your range
    tmp = B[B.year == year] # slice it year wise
    for week in set(tmp.week):  # for each week in slice
        temp = tmp[tmp.week == week]
        print(temp[temp.weekday == temp.weekday.min()])     # begining of week
        print(temp[temp.weekday == temp.weekday.max()])     # ending of week

因此,基本上,您将日历与我们的假日一起导入,创建一个所需的日期范围,根据日历切片日期范围,然后去掉周六和周日,然后循环使用它并在日期范围中返回每个星期的开始和结束。 希望有帮助!在

相关问题 更多 >