Polars list.to_struct() выдает «PanicException: ожидаемый известный тип»Python

Программы на Python
Anonymous
Polars list.to_struct() выдает «PanicException: ожидаемый известный тип»

Сообщение Anonymous »

Это новый вопрос/проблема, дополняющий вопрос «Как вернуть несколько статистических данных в виде нескольких столбцов в контексте grouby Polars?» и Как сгладить/разделить кортеж массивов и вычислить средние значения столбцов в кадре данных Polars?
По сути, проблему/проблему можно легко проиллюстрировать на примере ниже:

Код: Выделить всё

from functools import partial

import polars as pl
import statsmodels.api as sm

def ols_stats(s, yvar, xvars):
df = s.struct.unnest()
reg = sm.OLS(df[yvar].to_numpy(), df[xvars].to_numpy(), missing="drop").fit()
return pl.Series(values=(reg.params, reg.tvalues), nan_to_null=True)

df = pl.DataFrame(
{
"day": [1, 1, 1, 1, 1, 2, 2, 2, 2, 2],
"y": [1, 6, 3, 2, 8, 4, 5, 2, 7, 3],
"x1": [1, 8, 2, 3, 5, 2, 1, 2, 7, 3],
"x2": [8, 5, 3, 6, 3, 7, 3, 2, 9, 1],
}
).lazy()

res = df.group_by("day").agg(
pl.struct("y", "x1", "x2")
.map_elements(partial(ols_stats, yvar="y", xvars=["x1", "x2"]))
.alias("params")
)

res.with_columns(
pl.col("params").list.eval(pl.element().list.explode()).list.to_struct()
).unnest("params").collect()
После запуска приведенного выше кода возникает следующая ошибка:

Код: Выделить всё

PanicException: expected known type
Но когда .lazy() и .collect() удалены из приведенного выше кода, код работает идеально, как и предполагалось. Ниже приведены результаты (ожидаемое поведение) при работе в режиме ожидания.

Код: Выделить всё

shape: (2, 5)
┌─────┬──────────┬──────────┬──────────┬───────────┐
│ day ┆ field_0  ┆ field_1  ┆ field_2  ┆ field_3   │
│ --- ┆ ---      ┆ ---      ┆ ---      ┆ ---       │
│ i64 ┆ f64      ┆ f64      ┆ f64      ┆ f64       │
╞═════╪══════════╪══════════╪══════════╪═══════════╡
│ 2   ┆ 0.466089 ┆ 0.503127 ┆ 0.916982 ┆ 1.451151  │
│ 1   ┆ 1.008659 ┆ -0.03324 ┆ 3.204266 ┆ -0.124422 │
└─────┴──────────┴──────────┴──────────┴───────────┘
Итак, в чем проблема и как ее решить?

Подробнее здесь: https://stackoverflow.com/questions/756 ... known-type

Вернуться в «Python»