Как использовать Polars.lit в контексте агрегации group_byPython

Программы на Python
Ответить
Anonymous
 Как использовать Polars.lit в контексте агрегации group_by

Сообщение Anonymous »

По сути, я хочу вычислить сумму степеней константы.
В качестве иллюстрации:

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

import polars as pl

c = 2

df = pl.DataFrame({"a": [1, 2, 3]})

df.select(pl.lit(c).pow(pl.col("a")).sum())

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

shape: (1, 1)
┌─────────┐
│ literal │
│ ---     │
│ i32     │
╞═════════╡
│ 14      │
└─────────┘
Однако, когда я попытался сделать то же самое в контексте группировки по agg, я получил ошибку:

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

import polars as pl

c = 2

df = pl.DataFrame({"a": [1, 2, 3, 1, 2, 3], "b": [1, 1, 1, 2, 2, 2]})

df.group_by("b").agg(pl.lit(c).pow(pl.col("a")).sum())

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

# Error originated in expression: '2i32.pow([col("a")])'
Один (временный) способ заставить это работать — заранее добавить столбец в df, например

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

df = df.with_columns(pl.lit(c).alias("c"))
Но это не чисто, поскольку в исходном файле df может существовать столбец с именем «c» (или любым другим псевдонимом, который я даю), что может вызвать конфликт имен столбцов.
Я уверен, что может быть лучший и более чистый способ сделать это. Но как?

Подробнее здесь: https://stackoverflow.com/questions/758 ... on-context
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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