Python 自动交替排班
思路:假设7人,每人最多只能连续上六天班。六个时间段
1.每次排六位,再将排完的前一位追加到列表后面
2.将排完的前一位删除
这样每次得到的新列表就只有六人,剩一人休息
代码:貌似还要pip下某个库,运行会提示
import pandas as pd
# 六个时间段循环排班
def gen_data(n):
data = [] # 存入每次排班的数据
employee = ['天谷','九环','大圣','不空','天音','杀憎','菩提'] # 原始员工及顺序数据
for i in range(n):
data.append(employee[:6]) # 排班,排进6人
employee.extend(employee[:1]) # 前1个人追加到列表后总
del employee[:1] # 删除前1个,下次就休息了
return data
index_rows=pd.date_range(start='2023-03-01', periods=31) # start为日期,periods为天数
index_colums=['9-14','14-19','19-24','9-14','14-19','19-24']#定义列字段
df = pd.DataFrame(gen_data(31), index=index_rows,columns=index_colums )#gen_data()修改为天数
df_T=pd.DataFrame(df.values.T,columns=index_rows,index=index_colums)#转置
print(df_T)
df_T.to_excel('时间段排班-202303.xlsx')
结果:
