Число скользящих полярностей PythonPython

Программы на Python
Ответить
Anonymous
 Число скользящих полярностей Python

Сообщение Anonymous »

В полярах есть несколько известных функций прокатки, а именноrolling_mean(),rolling_apply() иrolling_max(). Однако, если я хочу подсчитать количество вхождений значения в каждом окне, как это сделать?
Предположим, теперь у нас есть LazyFrame:

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

df = pl.LazyFrame({"Date": ["2023-01-01", "2023-01-02", "2023-01-03", "2023-01-05", "2023-01-10", "2023-01-11", "2023-01-12"], "Pattern": [True, True, False, True, False, False, True]})
┌────────────┬─────────┐
│ Date       ┆ Pattern │
│ ---        ┆ ---     │
│ str        ┆ bool    │
╞════════════╪═════════╡
│ 2023-01-01 ┆ true    │
│ 2023-01-02 ┆ true    │
│ 2023-01-03 ┆ false   │
│ 2023-01-05 ┆ true    │
│ 2023-01-10 ┆ false   │
│ 2023-01-11 ┆ false   │
│ 2023-01-12 ┆ true    │
└────────────┴─────────┘
И желаемый результат для n = 3 и шаблона = True будет следующим:

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

┌────────────┬─────────┐
│ Date       ┆ Count   │
│ ---        ┆ ---     │
│ str        ┆ int     │
╞════════════╪═════════╡
│ 2023-01-01 ┆ null    │
│ 2023-01-02 ┆ null    │
│ 2023-01-03 ┆ 2       │
│ 2023-01-05 ┆ 2       │
│ 2023-01-10 ┆ 1       │
│ 2023-01-11 ┆ 1       │
│ 2023-01-12 ┆ 1       │
└────────────┴─────────┘
Я пробовал использоватьroll_sum() для столбца Pattern, но, поскольку мой столбец имеет логический тип, использование таких функций приведет только к ошибке.
В pandas этого можно добиться следующим образом:

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

df["Pattern"].apply(lambda x: x == True).rolling(3, min_periods = 0).sum()
Как правильно это сделать с полярами? и как я могу обобщить решение для столбцов, отличных от истинного значения логического значения, например, ложных и категориальных данных?

Подробнее здесь: https://stackoverflow.com/questions/758 ... ling-count
Ответить

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

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

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

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

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