Истина или ложь на основе значений в другом столбце?

#dataframe #indexing #conditional-statements

Вопрос:

Я пытаюсь добавить столбец в фрейм данных, основанный на другом столбце в этом фрейме данных, где значения напрямую соответствуют другому столбцу. Я работаю на Python. У меня много проблем с тем, чтобы хорошо сформулировать это, поэтому я просто продемонстрирую.

У меня есть следующий фрейм данных:

            DateTime      Value
--------------------------------
2015-03-11 06:00:00          1
2015-03-11 07:00:00          2
2015-03-11 08:00:00          2
2015-03-11 09:00:00          3
2015-03-11 10:00:00          3
2015-03-11 11:00:00          2
2015-03-11 12:00:00          4
2015-03-11 13:00:00          6
2015-03-11 14:00:00          5
2015-03-11 15:00:00          3
2015-03-11 16:00:00          3
2015-03-11 17:00:00          2
2015-03-11 18:00:00          1
...
 

Теперь я хочу добавить столбец в этот фрейм данных, основанный на столбце «Значение», который называется «Value_2». Я хочу, чтобы «Value_2» отображал все значения «1», а затем находил первый экземпляр 3 или более последовательных значений >= 4, отображал значения «1» в течение первых 2 из этих 3 часов, а затем создавал все значения «0» и далее, вот так:

            DateTime      Value       Value_2
---------------------------------------------
2015-03-11 06:00:00          1             1  
2015-03-11 07:00:00          2             1
2015-03-11 08:00:00          2             1
2015-03-11 09:00:00          3             1
2015-03-11 10:00:00          3             1
2015-03-11 11:00:00          2             1 
2015-03-11 12:00:00          4             1
2015-03-11 13:00:00          6             1
2015-03-11 14:00:00          5             0
2015-03-11 15:00:00          3             0  
2015-03-11 16:00:00          3             0
2015-03-11 17:00:00          2             0  
2015-03-11 18:00:00          1             0  
...
 

Это будет представлять значение «допуска» в 2 часа, после чего еще несколько часов (последовательно) значений >= 4 приведут ко всем 0 и далее. Я пытаюсь создать код, чтобы я мог легко изменить это значение «допуска» от 2 часов до 3 часов (это означает, что после первых последовательных 3 значений >= 4 одно дополнительное последовательное значение >>= 4 приведет ко всем 0 и далее), примерно так:

            DateTime      Value       Value_2
---------------------------------------------
2015-03-11 06:00:00          1             1  
2015-03-11 07:00:00          2             1
2015-03-11 08:00:00          2             1
2015-03-11 09:00:00          3             1
2015-03-11 10:00:00          3             1
2015-03-11 11:00:00          2             1 
2015-03-11 12:00:00          4             1
2015-03-11 13:00:00          6             1
2015-03-11 14:00:00          5             1
2015-03-11 15:00:00          4             0  
2015-03-11 16:00:00          3             0
2015-03-11 17:00:00          2             0  
2015-03-11 18:00:00          1             0  
...
 

Я хотел бы иметь возможность изменить это значение «допуска» на любое число. И под «допуском» я просто подразумеваю, сколько последовательных строк значений >= 4 в столбце «Значение» может быть переведено в 1 в столбце «Значение 2», прежде чем они станут всеми 0 и далее.

Можно ли это сделать простым способом в python? Или это на самом деле очень сложно?