У меня есть датафрейм, похожий на:
date condition count Value
01,01,2018 08:00 A 1 0
01,01,2018 08:01 A 2 1
01,01,2018 08:02 A 3 4
01,01,2018 08:03 B 1 2
01,01,2018 08:04 B 2 1
01,01,2018 08:05 B 3 7
01,01,2018 08:06 B 4 0
01,01,2018 08:07 C 1 11
01,01,2018 08:08 C 2 2
01,01,2018 08:09 C 3 0
01,01,2018 08:10 C 4 0
01,01,2018 08:11 C 5 0
01,01,2018 08:12 A 1 3
01,01,2018 08:13 A 2 1
01,01,2018 08:14 B 1 0
01,01,2018 08:15 B 2 0
01,01,2018 08:16 B 3 0
01,01,2018 08:17 C 1 8
Я пытаюсь проверить, равна ли сумма значений = 0 при определенных условиях:
Сумма должна быть выполнена в интервале от count = 1 до count = 3, если условие = B.
Тогда, если сумма значений такого интервала = 0, другой столбец с именем error должен дать значение 1.
В этом примере сумма = 10 с 08:03 до 08:05; и сумма = 0 с 08:14 до 08:16. Таким образом, в этом случае значения в ошибке столбца должны быть все = 0, кроме 08:14 до 08:16, где они должны быть = 1.
Получение:
date condition count Value error
01,01,2018 08:00 A 1 0 0
01,01,2018 08:01 A 2 1 0
01,01,2018 08:02 A 3 4 0
01,01,2018 08:03 B 1 2 0
01,01,2018 08:04 B 2 1 0
01,01,2018 08:05 B 3 7 0
01,01,2018 08:06 B 4 0 0
01,01,2018 08:07 C 1 11 0
01,01,2018 08:08 C 2 2 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 3 0
01,01,2018 08:13 A 2 1 0
01,01,2018 08:14 B 1 0 1
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 8 0
Я пытался с
df['error']=np.where((df['condition']==B) & (df['count']<=5) & (df['value'].sum==0), 1, 0)
или если / для циклов, но я получаю ошибки.
На самом деле не имеет значения иметь 1 на каждое значение ошибки в интервале или только в одной строке в интервале, достаточно, чтобы где-то там была 1, чтобы я мог ее распознать. Возможно, интервал можно было бы выбрать, посмотрев на первые 3 минуты, когда начинается условие B, а не на счет (мне это просто кажется легче).
Есть идеи? Заранее спасибо:)