Как рекурсивно вычислить столбец на основе значений предыдущих строк другого столбца в Polars?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как рекурсивно вычислить столбец на основе значений предыдущих строк другого столбца в Polars?

Сообщение Anonymous »

Я пытаюсь вычислить столбец Weighted_goals в DataFrame, используя библиотеку Polars в Python. Я хочу, чтобы значение Weighted_goals вашего текста в каждой строке зависело от предыдущих значений столбца с названием «цели», рассчитанных для каждой команды с использованием окна на основе группы (

Код: Выделить всё

over("Team")
).
Формула, которую я собираюсь реализовать, выглядит примерно так:
  • Для каждого строка:

Код: Выделить всё

weighted_goals = 0.8 * goals[n] + 0.2 * (0.8 * goals[n-1] + 0.2 * (0.8 * goals[n-2] ...)
Идея состоит в том, чтобы Weighted_goals представлял собой рекурсивный расчет, учитывающий предыдущие значения целей для каждой команды с экспоненциальным затуханием ( или взвешивание) на каждом этапе.
Для иллюстрации предположим, что у меня есть следующий DataFrame:

Код: Выделить всё

import polars as pl

data = pl.DataFrame({
"Team": ["A", "A", "A", "B", "B", "B"],
"Week": [1, 2, 3, 1, 2, 3],
"goals": [2, 1, 3, 1, 4, 2]
})
Для этого ввода я бы хотел, чтобы столбец Weighted_goals выглядел примерно так (с использованием рекурсивной формулы, упомянутой выше):



Команда
< th>Цели на неделю
цели
weighted_goals




A
1
2
2


A
2
1
0,8 * 1 + 0,2 * 2 = 1,2


< td>A
3
3
0,8 * 3 + 0,2 * (0,8 * 1 + 0,2 * 2) = 2,56


B
1
1
1


B2
4
0,8 * 4 + 0,2 * 1 = 3,2


B
3
2
0,8 * 2 + 0,2 * (0,8 * 4 + 0,2 * 1) = 2,56



Как реализовать эту рекурсивную формулу в Polars? Есть ли эффективный способ добиться этого без использования явного цикла?

Подробнее здесь: https://stackoverflow.com/questions/791 ... another-co
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»