这是我们公司的小组工作安排表。为三班制,2组日夜工作,1组休息。重复白天工作4天休息2天,然后再次夜间工作4天休息2天的时间表。我想使用 python (pandas) 自动安排在 8 月 9 日之后。抱歉英语不好,提前感谢您的帮助
以下是使用 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)
这段代码将:
- 定义日期范围: 设置起始日期和结束日期。
- 创建一个空的 DataFrame: 使用日期范围作为索引创建 DataFrame。
- 定义工作组和轮班模式: 创建工作组和轮班模式的列表。
- 创建循环填充 DataFrame:
- 循环遍历每个工作组。
- 使用列表切片和乘法创建重复的轮班模式。
-
使用
shift()
函数将轮班模式移动到正确的位置。 - 将轮班模式分配给 DataFrame 中的相应列。
这将创建一个包含 8 月 9 日之后时间表的 DataFrame,其中每个工作组按照定义的模式轮流工作。
注意:
- 请根据需要修改起始日期、结束日期和组数。
- 还可以根据需要自定义轮班模式。
-
此代码假设所有工作组在同一天开始循环。如果需要,可以通过调整
start_index
变量来修改这一点。