Ниже показано, как я это делаю (неправильно) с помощью cum_count.
Код: Выделить всё
import polars as pl
from datetime import date
df = pl.DataFrame(
data = {
"Event":["Rain","Sun","Rain","Sun","Rain","Sun","Rain","Sun"],
"Date":[
date(2022,1,1),
date(2022,1,2),
date(2022,1,2),
date(2022,1,3),
date(2022,1,3),
date(2022,1,5),
date(2022,1,5),
date(2022,1,8)
]
}
)
df.with_columns(
pl.col("Date").cum_count().over("Event").alias("cum_count")
)
Код: Выделить всё
shape: (8, 3)
┌───────┬────────────┬───────────┐
│ Event ┆ Date ┆ cum_count │
│ --- ┆ --- ┆ --- │
│ str ┆ date ┆ u32 │
╞═══════╪════════════╪═══════════╡
│ Rain ┆ 2022-01-01 ┆ 1 │
│ Sun ┆ 2022-01-02 ┆ 1 │
│ Rain ┆ 2022-01-02 ┆ 2 │
│ Sun ┆ 2022-01-03 ┆ 2 │
│ Rain ┆ 2022-01-03 ┆ 3 │
│ Sun ┆ 2022-01-05 ┆ 3 │
│ Rain ┆ 2022-01-05 ┆ 4 │
│ Sun ┆ 2022-01-08 ┆ 4 │
└───────┴────────────┴───────────┘
Код: Выделить всё
shape: (8, 3)
┌───────┬────────────┬───────────┐
│ Event ┆ Date ┆ cum_count │
│ --- ┆ --- ┆ --- │
│ str ┆ date ┆ u32 │
╞═══════╪════════════╪═══════════╡
│ Rain ┆ 2022-01-01 ┆ 0 │
│ Sun ┆ 2022-01-02 ┆ 0 │
│ Rain ┆ 2022-01-02 ┆ 1 │
│ Sun ┆ 2022-01-03 ┆ 1 │
│ Rain ┆ 2022-01-03 ┆ 2 │
│ Sun ┆ 2022-01-05 ┆ 1 │
│ Rain ┆ 2022-01-05 ┆ 1 │
│ Sun ┆ 2022-01-08 ┆ 0 │
└───────┴────────────┴───────────┘
Спасибо
Пробовал безуспешно
Подробнее здесь: https://stackoverflow.com/questions/751 ... n-duration