Recosh
@Recosh
Программист студент

Как получить среднее значение за последние n строк в новую колонку в pandas?

Приветствую. Вот подробнее распишу, не знаю как загуглить.

Есть таблица:
a = [[1,2], [2,3], [3,5], [2,9], [4,5], [2,5]]
df = pd.DataFrame(a, columns=['low', 'high'])
df

5eb7c3030a84f228407417.png

Без проблем получается посчитать среднее между колонками
df = df.assign(hl2 = (df.low + df.high) / 2)
df

5eb7c3bc32030064976596.png

А вот как посчитать среднее для каждых последних 3х строк?
Попробовал так:
df = df.assign(mean3 = df.tail(3).hl2.mean())
df

И получил везде результат в общем по последним 3м строкам
5eb7c448e51ce002729515.png

Можно конечно перебрать циклом, но при больших данных это очень не эффективно. Думаю должен же быть какой-то нативный метод для этого?

Например в системе мониторинга prometheus используется метод в запросе rate, который делает нечто подобное.
  • Вопрос задан
  • 46 просмотров
Решения вопроса 1
Recosh
@Recosh Автор вопроса
Программист студент
Нашёл ответ. Метод rolling
df = df.assign(mean3 = df.rolling(3, min_periods=1).hl2.mean())
df

5eb7cfec44a3d682733791.png
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
iCode Москва
от 90 000 до 200 000 ₽
SwapZilla.co Москва
от 200 000 ₽
SwapZilla.co Сочи
от 200 000 ₽
09 июл. 2020, в 00:43
50000 руб./за проект
08 июл. 2020, в 22:59
1000 руб./за проект
08 июл. 2020, в 22:19
27000 руб./за проект