Оконная функция Python Polars с литеральным типомPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Оконная функция Python Polars с литеральным типом

Сообщение Anonymous »

Предположим, у меня есть DataFrame с таким столбцом идентификатора:

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

df = pl.from_repr("""
┌─────┐
│ id  │
│ --- │
│ i64 │
╞═════╡
│ 1   │
│ 1   │
│ 1   │
│ 2   │
│ 2   │
│ 3   │
│ 3   │
└─────┘
""")
Я хочу агрегировать текущий счетчик по столбцу id, чтобы получить следующий результат:

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

┌─────┬───────┐
│ id  ┆ count │
│ --- ┆ ---   │
│ i64 ┆ i64   │
╞═════╪═══════╡
│ 1   ┆ 1     │
│ 1   ┆ 2     │
│ 1   ┆ 3     │
│ 2   ┆ 1     │
│ 2   ┆ 2     │
│ 3   ┆ 1     │
│ 3   ┆ 2     │
└─────┴───────┘
Моя попытка заключалась в создании фиктивного столбца, который, я думаю, дал желаемый результат, но кажется немного хакерским.

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

(
df.with_columns(
pl.lit(1).alias("ones")
)
.with_columns(
(pl.col("ones").cum_sum().over("id")).alias("count")
)
.drop("ones")
)
Однако, когда я пробую это:

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

(
df.with_columns(
(pl.lit(1).cum_sum().over("id")).alias("count")
)
.drop("ones")
)
Я получаю сообщение об ошибке «ComputeError: длина выражения окна не соответствует длине выражения группы».
Есть ли лучший способ сделать это? Чего мне не хватает в моей попытке выше?

Подробнее здесь: https://stackoverflow.com/questions/758 ... teral-type
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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