Код: Выделить всё
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},
)
Пока что есть (столбецorders — это просто иллюстрация) вышеупомянутого «расчета»).
Код: Выделить всё
(
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"),
)
)
Код: Выделить всё
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"]
Код: Выделить всё
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"]
ОБНОВЛЕНИЕ: я только что заметил, что можно добавить столбец из исходного фрейма данных с помощью with_column(df.select()), см. мой ответ ниже.
Предположим, я хочу использовать значение из текущей строки на шаге agg, например. добавить или вычесть его из группы означает или что-то в этом роде.
Подробнее здесь: https://stackoverflow.com/questions/793 ... ing-window
Мобильная версия