我有一个包含3列的Polars
数据帧-组、日期、值.目标是 for each group
的每个扩展窗口计算在每年的第一时间点结束的cumsum(value)
.
例如,对于以下示例数据帧:
import polars as pl
df = pl.DataFrame(
{
"date": [
"2020-03-01",
"2020-05-01",
"2020-11-01",
"2021-01-01",
"2021-02-03",
"2021-06-08",
"2022-01-05",
"2020-07-01",
"2020-09-01",
"2022-01-05",
"2023-02-04",
],
"group": [1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2],
"value": [1, 2, 3, 4, 5, 6, 7, 1, 2, 3, 4],
},
).with_columns(pl.col("date").str.strptime(pl.Date))
我想要的结果是:
┌────────────┬───────┬───────┐
│ date ┆ group ┆ value │
│ --- ┆ --- ┆ --- │
│ date ┆ i64 ┆ i64 │
╞════════════╪═══════╪═══════╡
│ 2020-03-01 ┆ 1 ┆ 1 │
│ 2021-01-01 ┆ 1 ┆ 10 │
│ 2022-01-05 ┆ 1 ┆ 28 │
│ 2020-07-01 ┆ 2 ┆ 1 │
│ 2022-01-05 ┆ 2 ┆ 6 │
│ 2023-02-04 ┆ 2 ┆ 10 │
└────────────┴───────┴───────┘
基本上,在每年的第一天,分别为每一组计算从开始到(包括)这个特定日期的累计和value
.
我试了group_by_dynamic
和rolling
,但仍然找不到一个简洁明确的方法来解决这个问题.
任何 idea 都是受欢迎的.谢谢!