Код: Выделить всё
import polars as pl
import numpy as np
t, v = np.arange(0, 100, 2), np.arange(0, 100, 2)
df = pl.DataFrame({"t": t, "v0": v, "v1": v})
df = df.with_columns((pl.datetime(2022,10,30) + pl.duration(seconds=df["t"])).alias("datetime")).drop("t")
df.group_by_dynamic("datetime", every="10s").agg(pl.col("v0").mean())
Код: Выделить всё
shape: (10, 2)
┌─────────────────────┬──────┐
│ datetime ┆ v0 │
│ --- ┆ --- │
│ datetime[μs] ┆ f64 │
╞═════════════════════╪══════╡
│ 2022-10-30 00:00:00 ┆ 4.0 │
│ 2022-10-30 00:00:10 ┆ 14.0 │
│ 2022-10-30 00:00:20 ┆ 24.0 │
│ 2022-10-30 00:00:30 ┆ 34.0 │
│ ... ┆ ... │
Код: Выделить всё
df.group_by_dynamic("datetime", every="10s").agg(
pl.col("v0").mean().alias("v0_binmean"),
pl.col("v0").count().alias("v0_bincount")
)
┌─────────────────────┬────────────┬─────────────┐
│ datetime ┆ v0_binmean ┆ v0_bincount │
│ --- ┆ --- ┆ --- │
│ datetime[μs] ┆ f64 ┆ u32 │
╞═════════════════════╪════════════╪═════════════╡
│ 2022-10-30 00:00:00 ┆ 4.0 ┆ 5 │
│ 2022-10-30 00:00:10 ┆ 14.0 ┆ 5 │
│ 2022-10-30 00:00:20 ┆ 24.0 ┆ 5 │
│ 2022-10-30 00:00:30 ┆ 34.0 ┆ 5 │
│ ... ┆ ... ┆ ... │
Код: Выделить всё
cols = [c for c in df.columns if "datetime" not in c]
df.group_by_dynamic("datetime", every="10s").agg(
pl.col(f"{c}").mean().alias(f"{c}_binmean")
for c in cols
)
┌─────────────────────┬────────────┬────────────┐
│ datetime ┆ v0_binmean ┆ v1_binmean │
│ --- ┆ --- ┆ --- │
│ datetime[μs] ┆ f64 ┆ f64 │
╞═════════════════════╪════════════╪════════════╡
│ 2022-10-30 00:00:00 ┆ 4.0 ┆ 4.0 │
│ 2022-10-30 00:00:10 ┆ 14.0 ┆ 14.0 │
│ 2022-10-30 00:00:20 ┆ 24.0 ┆ 24.0 │
│ 2022-10-30 00:00:30 ┆ 34.0 ┆ 34.0 │
│ ... ┆ ... ┆ ... │
Код: Выделить всё
df.group_by_dynamic("datetime", every="10s").agg(
[
pl.col(f"{c}").mean().alias(f"{c}_binmean"),
pl.col(f"{c}").count().alias(f"{c}_bincount")
]
for c in cols
)
Код: Выделить всё
DuplicateError: column with name 'literal' has more than one occurrences
связано, pandas -специфично: Python pandas группируется по нескольким столбцам
Подробнее здесь: https://stackoverflow.com/questions/749 ... hon-polars