Я хочу сгруппировать по столбцу z и интерполировать столбцы x и y. Вот пример фрейма данных:
Код: Выделить всё
┌─────┬─────┬─────┐
│ x ┆ y ┆ z │
│ --- ┆ --- ┆ --- │
│ i64 ┆ i64 ┆ str │
╞═════╪═════╪═════╡
│ 5 ┆ 1 ┆ A │
│ 10 ┆ 2 ┆ A │
│ 20 ┆ 4 ┆ A │
│ 25 ┆ 5 ┆ A │
│ 10 ┆ 2 ┆ B │
│ 20 ┆ 4 ┆ B │
│ 30 ┆ 6 ┆ B │
└─────┴─────┴─────┘
Код: Выделить всё
┌─────┬─────┬─────┐
│ x ┆ y ┆ z │
│ --- ┆ --- ┆ --- │
│ i64 ┆ i64 ┆ str │
╞═════╪═════╪═════╡
│ 5 ┆ 1 ┆ A │
│ 10 ┆ 2 ┆ A │
│ 15 ┆ 3 ┆ A │
│ 20 ┆ 4 ┆ A │
│ 25 ┆ 5 ┆ A │
│ 10 ┆ 2 ┆ B │
│ 15 ┆ 3 ┆ B │
│ 20 ┆ 4 ┆ B │
│ 25 ┆ 5 ┆ B │
│ 30 ┆ 6 ┆ B │
└─────┴─────┴─────┘
Без столбца категории z Я решил проблему с помощью соединения:
Код: Выделить всё
import polars as pl
# Main dataframe
data = dict(x=[10, 20, 30], y=[2, 4, 6])
df = pl.DataFrame(data)
# Dataframe with all x values
step = 5
df_1 = pl.DataFrame(dict(x=range(df["x"].min(), df["x"].max() + step, step)))
# merging and interpolation
print((
df_1
.join(df, on="x", how="left")
.with_columns(pl.col("y").interpolate())
))
Код: Выделить всё
┌─────┬─────┐
│ x ┆ y │
│ --- ┆ --- │
│ i64 ┆ i64 │
╞═════╪═════╡
│ 10 ┆ 2 │
│ 15 ┆ 3 │
│ 20 ┆ 4 │
│ 25 ┆ 5 │
│ 30 ┆ 6 │
└─────┴─────┘
Подробнее здесь: https://stackoverflow.com/questions/775 ... by-context
Мобильная версия