You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现每月前6个工作日(周一至周五)的标记功能

标记每月前6个工作日实现方案

我们要实现的效果为:仅将每月周一至周五的前6个工作日标记为True,其余日期(含周末、当月第7个及以后的工作日)标记为False,该方案验证2021年11月场景时,11月1-5日为前5个工作日标记为True,6-7日为周末标记为False,11月8日为第6个工作日标记为True,后续日期全部为False,和你给出的示例完全匹配。

Excel 公式实现

假设你的日期数据存储在A列,从A2行开始写入日期,在B2单元格输入如下公式,下拉填充即可:
=AND(WEEKDAY(A2,2)<=5,NETWORKDAYS(EOMONTH(A2,-1)+1,A2)<=6)

  • 公式逻辑说明:
    • WEEKDAY(A2,2)<=5:判断当前日期是否为周一到周五的工作日,参数为2时周一返回1、周日返回7
    • NETWORKDAYS(EOMONTH(A2,-1)+1,A2)<=6:计算从当月第一天到当前日期的工作日累计数量,判断是否小于等于6
    • 两个条件同时满足时返回True,否则返回False

Python Pandas 实现

如果是用Python处理批量日期数据,可以用如下代码实现:

import pandas as pd

# 1. 首先将日期列转为pandas日期类型,df为你的原始数据框,date为日期列名
df['date'] = pd.to_datetime(df['date'])
# 2. 先判断日期是否为工作日(周一到周五对应weekday返回0-4,周六周日为5-6)
df['is_workday'] = df['date'].dt.weekday <= 4
# 3. 按月份分组,对每个月的工作日做累计求和,前6个标记为True
df['FlagDate'] = df.groupby(df['date'].dt.to_period('M'))['is_workday'].cumsum() <= 6
# 4. 所有非工作日统一设置为False
df.loc[~df['is_workday'], 'FlagDate'] = False

运行后FlagDate列就是你需要的标记结果。

内容的提问来源于stack exchange,提问作者Kair0

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 15:45:07