如何生成特定月份内的随机工作日日期

2024-04-23 12:00:36 发布

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

在这里输入代码我是新手,我想用python生成一个日期/日期,以帮助我的同事。这里我们假设星期天和星期六是周末,为什么我的函数有时会返回到“无”?我想通过一个固定的年和月,每次我运行,例如,运行a=random weekdays(2018,6)得到一天,有什么解决方案吗?在

import calendar
import datetime
import random
import re
def RandomWeekdays(year,month):
    def randomdate(year, month):
        dates = calendar.Calendar().itermonthdates(year, month)
        return random.choice([date for date in dates if date.month == month])

    RandomDate_R = randomdate(2018, 6)
    RandomDateStr_R = RandomDate_R.strftime('%Y-%m-%d')
    date_num_iter = re.findall(r'\d{1,2}',RandomDateStr_R)
    day = int(date_num_iter[3])
    dayOrder = calendar.weekday(2018,month,day)
    if dayOrder in range(0,5):
        return day
    else:
        day+=2`enter code here`
        if day > 29:
            day-=4
            return day
a=RandomWeekdays(2018,6)
print(a)

Tags: inimportredatereturnifdefrandom
1条回答
网友
1楼 · 发布于 2024-04-23 12:00:36

您将得到None,因为您还没有用if处理相应的条件,您可以使用write elseif添加句柄代码。在

但我建议你用熊猫来轻松实现。在

import random, calendar
import pandas as pd

def randomDate(year, month):
    day_count = calendar.monthrange(year, month)[1]
    t = random.choice(pd.date_range(f"{year}-{month}-01", f"{year}-{month}-{day_count}", freq='D'))
    return randomDate() if t.dayofweek == 5 or t.dayofweek == 6 else t

randomDate(2018, 8)
# Timestamp('2018-08-20 00:00:00', freq='D')

相关问题 更多 >