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')

结果: