Я хотел бы выполнить некоторые расчеты в скользящем окне. Для этого я хотел бы получить значение из текущей строки (столбца, который не является частью определения окна (т.е. раздела или фрейма)), например. order_id в следующем примере, а также индекс строки для каждого кадра (не раздела).
Пока что есть (столбецorders — это просто иллюстрация) вышеупомянутого «расчета»).
Мне кажется, что мне не хватает выражения current_row() или nth(), но, вероятно, есть другие умные способы добиться того, чего я хочу, с помощью полярники?
Учитывая следующую структуру данных [code]import polars as pl
df = pl.DataFrame( { "order_id": ["o01", "o02", "o03", "o04", "o10", "o11", "o12", "o13"], "customer_id": ["ca", "ca", "ca", "ca", "cb", "cb", "cb", "cb"], "date": [ "2024-04-03", "2024-04-04", "2024-04-04", "2024-04-11", "2024-04-02", "2024-04-02", "2024-04-03", "2024-05-13", ], }, schema_overrides={"date": pl.Date}, ) [/code] Я хотел бы выполнить некоторые расчеты в скользящем окне. Для этого я хотел бы получить значение из текущей строки (столбца, который не является частью определения окна (т.е. раздела или фрейма)), например. order_id в следующем примере, а также индекс строки для каждого кадра (не раздела). Пока что есть (столбецorders — это просто иллюстрация) вышеупомянутого «расчета»). [code]( df.sort("customer_id", "date") .rolling( index_column="date", period="1w", offset="0d", closed="left", group_by="customer_id", ) .agg( frame_index=pl.int_range(pl.len()).first(), current_order_id=pl.col("order_id").first(), orders=pl.col("order_id"), ) ) [/code] [code]customer_id date frame_index current_order_id orders str date i64 str list[str] "ca" 2024-04-03 0 "o01" ["o01", "o02", "o03"] "ca" 2024-04-04 0 "o02" ["o02", "o03"] "ca" 2024-04-04 0 "o02" ["o02", "o03"] "ca" 2024-04-11 0 "o04" ["o04"] "cb" 2024-04-02 0 "o10" ["o10", "o11", "o12"] "cb" 2024-04-02 0 "o10" ["o10", "o11", "o12"] "cb" 2024-04-03 0 "o12" ["o12"] "cb" 2024-05-13 0 "o13" ["o13"] [/code] Но мне бы хотелось (обратите внимание на различия вframe_index и current_order_id в 3-й и 6-й строке). [code]customer_id date frame_index current_order_id orders str date i64 str list[str] "ca" 2024-04-03 0 "o01" ["o01", "o02", "o03"] "ca" 2024-04-04 0 "o02" ["o02", "o03"] "ca" 2024-04-04 1 "o03" ["o02", "o03"] "ca" 2024-04-11 0 "o04" ["o04"] "cb" 2024-04-02 0 "o10" ["o10", "o11", "o12"] "cb" 2024-04-02 1 "o11" ["o10", "o11", "o12"] "cb" 2024-04-03 0 "o12" ["o12"] "cb" 2024-05-13 0 "o13" ["o13"] [/code] Мне кажется, что мне не хватает выражения current_row() или nth(), но, вероятно, есть другие умные способы добиться того, чего я хочу, с помощью полярники?