Количество уникальных имен пользователей составляет около 1000, а количество событий - порядка десятков миллионов. .
Рабочий пример с опорной точкой и DataFrame:
Входной кадр данных:
Код: Выделить всё
df = pl.from_repr("""
┌────────────┬──────────┬───────┐
│ timestamp ┆ username ┆ kudos │
│ --- ┆ --- ┆ --- │
│ i64 ┆ str ┆ i64 │
╞════════════╪══════════╪═══════╡
│ 1690886106 ┆ ABC ┆ 123 │
│ 1690886107 ┆ DEF ┆ 10 │
│ 1690886110 ┆ DEF ┆ 12 │
│ 1690886210 ┆ GIH ┆ 0 │
└────────────┴──────────┴───────┘
""")
Код: Выделить всё
(
df.pivot(
on="username",
index="timestamp",
values=["kudos"],
aggregate_function="last",
)
.select(pl.all().forward_fill())
.fill_null(strategy="zero")
.select(pl.col("timestamp"), pl.sum_horizontal(df["username"].unique().to_list()).alias("sum"))
)
Код: Выделить всё
shape: (4, 2)
┌────────────┬─────┐
│ timestamp ┆ sum │
│ --- ┆ --- │
│ i64 ┆ i64 │
╞════════════╪═════╡
│ 1690886106 ┆ 123 │
│ 1690886107 ┆ 133 │
│ 1690886110 ┆ 135 │
│ 1690886210 ┆ 135 │
└────────────┴─────┘
Подробнее здесь: https://stackoverflow.com/questions/768 ... ith-polars