首页 > 编程问答 >使用python,如何创建重复的工作时间表

使用python,如何创建重复的工作时间表

时间:2024-07-24 08:32:10浏览次数:11  
标签:python pandas

这是我们公司的小组工作安排表。为三班制,2组日夜工作,1组休息。重复白天工作4天休息2天,然后再次夜间工作4天休息2天的时间表。我想使用 python (pandas) 自动安排在 8 月 9 日之后。抱歉英语不好,提前感谢您的帮助 enter image description here


以下是使用 Python 和 Pandas 创建重复工作时间表的代码:

import pandas as pd

# 定义日期范围
start_date = pd.to_datetime('2023-08-09')
end_date = pd.to_datetime('2023-09-09')  # 修改为所需的结束日期
dates = pd.date_range(start_date, end_date)

# 创建一个空的 DataFrame 用于存储时间表
df = pd.DataFrame(index=dates)

# 定义工作组和轮班模式
groups = ['A', 'B', 'C']
shifts = ['Day', 'Night', 'Off']

# 创建一个循环,根据轮班模式填充 DataFrame
shift_cycle = ['Day']*4 + ['Off']*2 + ['Night']*4 + ['Off']*2

for i, group in enumerate(groups):
    start_index = i * len(shift_cycle) // len(groups)
    df[group] = shift_cycle * (len(df) // len(shift_cycle) + 1)
    df[group] = df[group].shift(start_index).iloc[:len(df)]

# 显示时间表
print(df)

这段代码将:

  1. 定义日期范围: 设置起始日期和结束日期。
  2. 创建一个空的 DataFrame: 使用日期范围作为索引创建 DataFrame。
  3. 定义工作组和轮班模式: 创建工作组和轮班模式的列表。
  4. 创建循环填充 DataFrame:
  5. 循环遍历每个工作组。
  6. 使用列表切片和乘法创建重复的轮班模式。
  7. 使用 shift() 函数将轮班模式移动到正确的位置。
  8. 将轮班模式分配给 DataFrame 中的相应列。

这将创建一个包含 8 月 9 日之后时间表的 DataFrame,其中每个工作组按照定义的模式轮流工作。

注意:

  • 请根据需要修改起始日期、结束日期和组数。
  • 还可以根据需要自定义轮班模式。
  • 此代码假设所有工作组在同一天开始循环。如果需要,可以通过调整 start_index 变量来修改这一点。

标签:python,pandas
From: 78786019

相关文章

  • venv 已激活,但 pip 安装仍然默认进行,并且 python 在源代码中看不到该库
    在终端shell中的vscode中输入“whichpython”显示默认路径:C:\Users\erjan\AppData\Local\Programs\Python\Python311\python.exe(my_venv)但是(my_venv)意味着我的venv处于活动状态,我做了pipinstalltransformers,但下面的代码仍然显示错误-无法看到......
  • 在Python多处理中执行二进制信号量或互斥体以进行上下文切换操作
    我正在尝试自动化win应用程序和java应用程序之间的同步关系。我的标准是:启动win和jav应用程序在jav应用程序中执行命令等待jav应用程序的响应使用jav应用程序的响应到Windows应用程序作为输入。在jav应用程序中执行命令win应用程序......
  • 在spyder-python上随机出现的这些奇怪的亮点是什么
    在此处输入图像描述每次我单击此按钮或进行任何更改时,都会创建奇怪的突出显示,当我最小化功能时更是如此。有什么建议如何摆脱这些或可能的原因是什么?谢谢!我尝试更改外观首选项中的设置,但无法影响问题。很抱歉,我无法直接查看或与Spyder界面交互。我是一个AI......
  • 比较Python字典并找到缺失的元素
    我遇到了一个问题,我已经尝试了几天但没有得到任何结果。我想比较两个字典,在一个字典中有“赛前”足球比赛,在第二个字典中有“现场”足球比赛。我想将它们相互比较并打印它们(如果有)没有赛前比赛直播。示例1pre=[{"Home":"Genoa","Away":"In......
  • Python使用Visual Studio打印功能不显示输出
    任务:检查一个整数是正数还是负数。检查整数是否能被2整除。当输入0时,我需要退出循环并报告每个计数和总和。print函数没有显示任何输出。这是我从defmain()开始使用的代码defmain():countpositive=0countnegative=0count_divisible_by_2=0sump......
  • 检测 Pandas 列中特征漂移的矢量化方法是什么?
    我正在研究非常大的熊猫数据框,这些数据框保存具有显着特征漂移的时间序列。漂移通常是突然的(例如,特征将比之前几个时期大1.5-2.0倍)。我找到了几种检测“概念漂移”的解决方案。一种方便的选择是河流然而,该解决方案不是矢量化的。显然,矢量化方法要快得多-最......
  • Python 中的像素最小二乘法
    我有一个非线性前向模型,它计算每个像素参数w的灰度图像。我还可以使用scipys优化函数来反转模型。我目前遇到的唯一问题是图像的大小使得这个解决方案非常慢...比如7%的像素在40分钟内计算得很慢。我使用for循环遍历所有像素并按像素应用模型。我尝试过......
  • SQL 命令在手动运行时工作正常(SQL Developer),但在 Python 的 oracledb 模块中给出 ORA-
    我正在使用OracleSQL数据库,并且我想运行该命令ALTERSESSIONSETNLS_DATE_FORMAT='YYYY-MM-DD';当我从SQLDeveloper应用程序手动运行它时,它工作正常。但是,当我使用oracledb模块从Python运行它时,出现以下错误:ErrorrunningSQLscript:ORA-00922:mi......
  • 在pip包中分发pythonnet dll类型信息
    我已经能够使用C#通过以下方式加载pythonnetdll:fromimportlib.resourcesimportpathimportsys#Assuming'my_package.lib'isthesub-packagecontainingtheDLLswithpath('pyrp.lib','')aslib_path:sys.path.append......
  • 尝试使用 pyinstaller 将 python 文件转换为可执行文件时出现 TypeError
    稍后的目的是通过命令行向GPT4all发送问题并将答案存储在文本文档中。我想将阻止代码转换为exe,但它产生了TypeError。这是到目前为止的代码:fromgpt4allimportGPT4Allmodel=GPT4All("Meta-Llama-3-8B-Instruct.Q4_0.gguf",device='cpu')#downloads/loads......