【发布时间】:2020-04-24 18:21:30
【问题描述】:
我有一个看起来像这样的数据框:
empl_ID day_1 day_2 day_3 day_4 day_5 day_6 day_7 day_8 day_9 day_10
1 1 1 1 1 1 1 0 1 1 1
2 0 0 1 1 1 1 1 1 1 0
3 0 1 0 0 1 1 1 1 1 1
4 1 0 1 0 1 1 1 0 1 0
5 1 0 0 1 1 1 1 1 1 1
6 0 0 0 0 1 1 1 1 1 1
如我们所见,我们有 6 名员工,索引 1 表示他们当天在场。我想使用 Python 编写一个代码,以便我可以跟踪 2 次连续缺勤,即模式 0 ,0 代表第 i 天,第 i+1 天,从该人开始工作开始的 6 天时间范围内。
例如,员工 1 在第 1 列开始工作,这是他第一次出现 1。因此,从第 1 列到第 6 列,如果我们没有观察到任何连续的 0、0,则该记录应标记为“0”。员工 2(列:day_3 到 day_8)、员工 4(列:day_1 到 day_6)和员工 6(列:day_5 到 day_10)也是如此,它们将被标记为“0”。
但是,对于员工 3(列:day_2 到 day_7)、员工 6(列:day_5 到 day_10),它们在各自的时间范围内从第一次出现 1 开始就包含 0、0 模式,因此将被标记作为“1”。
如果有人可以帮助我制定代码以实现上述目标,那将非常有帮助。提前致谢!
结果应该是这样的:
empl_ID day_1 day_2 day_3 day_4 day_5 day_6 day_7 day_8 day_9 day_10 label
1 1 1 1 1 1 1 0 1 1 1 0
2 0 0 1 1 1 1 1 1 1 0 0
3 0 1 0 0 1 1 1 1 1 1 1
4 1 0 1 0 1 1 1 0 1 0 0
5 1 0 0 1 1 1 1 1 1 1 1
6 0 0 0 0 1 1 1 1 1 1 0
【问题讨论】:
标签: python-3.x pandas numpy dataframe pattern-matching