Pandas的轮班顺序

c2e8gylq  于 2022-12-16  发布在  其他
关注(0)|答案(1)|浏览(140)

我正在使用python和panda,使用下面的table/dataframe,其中包含了工作班次的信息,循环类型定义了工作日/非工作日(例如,5-3表示5天工作,3天不工作)。循环日表示工人处于循环的哪一天(对于5-3循环,这将从1到5)。最后,班次指示员工是上早班(M)、中班(A)还是夜班(N):
| 工人|循环类型|周期_天|班次|
| - ------|- ------|- ------|- ------|
| 爱丽丝|五、三|1个|男|
| 爱丽丝|五、三|第二章|男|
| 爱丽丝|五、三|三个|A类|
| 爱丽丝|五、三|四个|A类|
| 爱丽丝|五、三|五个|数量|
| 鲍勃|6-2| 1个|数量|
| 鲍勃|6-2|第二章|男|
| 鲍勃|6-2|三个|男|
| 鲍勃|6-2|四个|数量|
| 鲍勃|6-2|五个|A类|
| 鲍勃|6-2|六个|男|
其思想是获得一个新列,该列指示该行时刻向上移位的序列。例如,Alice工作两个上午,然后两个下午,然后一个晚上,因此最后一天的序列将是“M1,M2,A1,A2,N1”,其中数字指示每个移位的迭代次数。在Bob的情况下,最后一天的完整序列将是“N1,M1,M2,N2,A1,M3”。所需的表格如下:
| 工人|循环类型|周期_天|班次|序列|
| - ------|- ----------------------------------------------------|- ------|- ------|- ------|
| 爱丽丝|五、三|1个|男|M1|
| 爱丽丝|五、三|第二章|男|M1、M2|
| 爱丽丝|5-3页|三个|A类|M1、M2、A1|
| 爱丽丝|五、三|四个|A类|M1、M2、A1、A2|
| 爱丽丝|五、三|五个|数量|M1、M2、A1、A2、N1|
| 鲍勃|6-2| 1个|数量|N1|
| 鲍勃|6-2|第二章|男|N1、M1|
| 鲍勃|6-2|三个|男|N1、M1、M2|
| 鲍勃|6-2|四个|数量|N1、M1、M2、N2|
| 鲍勃|6-2|五个|A类|N1、M1、M2、N2、A1|
| 鲍勃|6-2|六个|男|N1、M1、M2、N2、A1、M3|
这个序列必须为每一天计算,不知道未来,这是,爱丽丝的第三天有一个序列“M1,M2,A1”,因为它还不知道第四和第五天。我想不出一个方法,使用Python和Pandas,捕捉所有这些细节。有什么想法吗?
编辑:如果可能的话,将完整序列作为一个新列“Full_sequence”显示也会很好

omhiaaxx

omhiaaxx1#

首先在数据框中添加一列,然后更新数据框的列顺序。

# Declare a list that is to be converted into a column
Sequence = [value of Sequence columns]
  
# Using 'Sequence' as the column name
# and equating it to the list
df['Sequence'] = Sequence

df = df[['Worker','Cycle_type','Cycle_day','Schedule','Sequence']]

相关问题