Уведомления

Группа в Telegram: присоединиться

#1 Май 17, 2019 19:00:51

asymon
Зарегистрирован: 2019-05-17
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Скользящее среднее по нескольким условиям

Python (3.6) , windows

надеюсь найдутся знатоки которые смогут помочь)

Имеется такая таблица


 X2          X3  X4  Y   Y1
01.02.2019  1   1   1   
02.02.2019  2   2   0   
02.02.2019  2   3   0   
02.02.2019  2   1   1   
03.02.2019  1   2   1   
04.02.2019  2   3   0   
05.02.2019  1   1   1   
06.02.2019  2   2   0   
07.02.2019  1   3   1   
08.02.2019  2   1   1   
09.02.2019  1   2   0   
10.02.2019  2   3   1   
11.02.2019  1   1   0   
12.02.2019  2   2   1   
13.02.2019  1   3   0   
14.02.2019  2   1   1   
15.02.2019  1   2   1   
16.02.2019  2   3   0   
17.02.2019  1   1   1   
18.02.2019  2   2   0
И в столбце Y1 необходимо посчитать скользящее среднее столбца Y за последние 5 дней, но только с фильтрацией по условию Х3 и Х4. Фильтр равен текущему значению столбцов для текущей строки. Например для строки 04.02.2019 2 3 0 среднее будет равно 0, потому что для нее условию соответствует только строка 02.02.2019 2 3 0

Как это сделать не понимаю, знаю что это будет нечто вроде

filtered_X4 = df.where(condition_1 & condition_2 & condition_3)
Но как задать сами условия condition_1,2,3 не понимаю.

Видел много примеров когда известен фильтр, например

condition_1 = df.isin()
но это не то что мне нужно. В принципе нужно что-то очень похожее на функцию СРЗНАЧЕСЛИМН в экселе)

Как посчитать среднее знаю

df = filtered_X4.shift(1).rolling(window = 999999, min_periods = 1).mean()
, но не могу настроить фильтрацию

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version