У меня есть фрейм данных, включающий определенное условие, счетчик количества последовательных повторений условия и определенное значение, которое выглядит следующим образом:
date condition count Value1 Value2
01,01,2018 08:00 A 1 0 0
01,01,2018 08:01 A 2 0 0
01,01,2018 08:02 A 3 0 0
01,01,2018 08:03 B 1 1 1
01,01,2018 08:04 B 2 0 1
01,01,2018 08:05 B 3 0 1
01,01,2018 08:06 B 4 0 0
01,01,2018 08:07 C 1 0 0
01,01,2018 08:08 C 2 0 0
01,01,2018 08:09 C 3 0 0
01,01,2018 08:10 C 4 0 0
01,01,2018 08:11 C 5 0 0
01,01,2018 08:12 A 1 0 0
01,01,2018 08:13 A 2 0 0
01,01,2018 08:14 B 1 0 0
01,01,2018 08:15 B 2 0 1
01,01,2018 08:16 B 3 0 1
01,01,2018 08:17 C 1 0 0
Я хотел бы добавить еще один столбец "error ", которая имеет значение 1 при условии:
, если value1 = 1 и условие = B, когда count = 1, тогда присваивайте error = 1, пока значение2 = 1.
Это должно выглядеть следующим образом:
date condition count Value1 Value2 error
01,01,2018 08:00 A 1 0 0 0
01,01,2018 08:01 A 2 0 0 0
01,01,2018 08:02 A 3 0 0 0
01,01,2018 08:03 B 1 1 1 1
01,01,2018 08:04 B 2 0 1 1
01,01,2018 08:05 B 3 0 1 1
01,01,2018 08:06 B 4 0 0 0
01,01,2018 08:07 C 1 0 0 0
01,01,2018 08:08 C 2 0 0 0
01,01,2018 08:09 C 3 0 0 0
01,01,2018 08:10 C 4 0 0 0
01,01,2018 08:11 C 5 0 0 0
01,01,2018 08:12 A 1 0 0 0
01,01,2018 08:13 A 2 0 0 0
01,01,2018 08:14 B 1 0 0 0
01,01,2018 08:15 B 2 0 1 0
01,01,2018 08:16 B 3 0 1 0
01,01,2018 08:17 C 1 0 0 0
Обратите внимание, что во второй раз, когда возникает условие B, значение1 никогда не становится равным 1, поэтому даже если значение2 = 1, ошибки нет.
Я пробовал что-то вроде:
df['error']=np.where(((df['value1']==1) & (df['condition']=='B') & df['value2']==1)) | ((df['error'].shift(1)=='1')&(df['value2']==1))),'1', 0)
но это дает мне ключевую ошибку, потому что я вызываю df['error'].shift(1)=='1'
в условиях where, а сам столбец "еще не существует".Любая идея?заранее благодарю за помощь!