Выполнить операцию прокрутки индексов без использования with_row_index()?Python

Программы на Python
Anonymous
 Выполнить операцию прокрутки индексов без использования with_row_index()?

Сообщение Anonymous »

У меня есть такой DataFrame:

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

import polars as pl

df = pl.DataFrame({"x": [1.2, 1.3, 3.4, 3.5]})
df

# shape: (3, 1)
# ┌─────┐
# │ a   │
# │ --- │
# │ f64 │
# ╞═════╡
# │ 1.2 │
# │ 1.3 │
# │ 3.4 │
# │ 3.5 │
# └─────┘
Я хотел бы выполнить скользящее агрегирование с помощью .rolling(), чтобы каждая строка использовала окно [-2:1]:

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

shape: (4, 2)
┌─────┬───────────────────┐
│ x   ┆ y                 │
│ --- ┆ ---               │
│ f64 ┆ list[f64]         │
╞═════╪═══════════════════╡
│ 1.2 ┆ [1.2, 1.3]        │
│ 1.3 ┆ [1.2, 1.3, 3.4]   │
│ 3.4 ┆ [1.2, 1.3, … 3.5] │
│ 3.5 ┆ [1.3, 3.4, 3.5]   │
└─────┴───────────────────┘
На данный момент мне удалось сделать это с помощью следующего кода:

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

df.with_row_index("index").with_columns(
y = pl.col("x").rolling(index_column = "index", period = "4i", offset = "-3i")
).drop("index")
Однако для этого потребуется вручную создать индекс столбца, а затем удалить его после операции. Есть ли способ добиться того же результата за один вызов with_columns()?


Подробнее здесь: https://stackoverflow.com/questions/794 ... -row-index

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