如何基于自定义Pandas工作日历统计当月已过及总工作日数
解决方案:计算当前月份的已过工作日与总工作日数
基于你已定义的BUSINESS_DAY自定义工作日历,可通过以下步骤实现需求:
实现步骤
- 获取系统当前日期
- 确定当前月份的首日与末日
- 生成该月份内符合自定义日历规则的所有工作日序列
- 分别统计总工作日数,以及截至当前日期已度过的工作日数
完整代码实现
import pandas as pd from datetime import datetime # 复用你已定义的feriados日历与BUSINESS_DAY对象 # 获取当前日期 today = datetime.today() # 计算当前月份的第一天和最后一天 month_start = today.replace(day=1) month_end = (month_start + pd.DateOffset(months=1)) - pd.DateOffset(days=1) # 生成当月所有工作日的日期序列 month_business_days = pd.date_range(start=month_start, end=month_end, freq=BUSINESS_DAY) # 统计总工作日数 total_business_days = len(month_business_days) # 统计已度过的工作日数(包含当天如果是工作日) passed_business_days = len(month_business_days[month_business_days <= today]) # 输出结果 print(f"当前月份总工作日数: {total_business_days}") print(f"当前月份已度过的工作日数: {passed_business_days}")
代码说明
datetime.today():获取系统当前本地日期时间month_start:将当前日期的日部分替换为1,得到当月第一天month_end:通过"加1个月再减1天"的方式,精准获取当月最后一天pd.date_range(..., freq=BUSINESS_DAY):利用自定义工作日历生成当月所有有效工作日的序列- 最后通过筛选序列中小于等于当前日期的元素,统计得到已完成的工作日数量
内容的提问来源于stack exchange,提问作者João Weckerle
相关产品推荐
相关产品推荐

