Как выполнить агрегацию окон max_by в Polars?Python

Программы на Python
Ответить
Anonymous
 Как выполнить агрегацию окон max_by в Polars?

Сообщение Anonymous »

Я пытаюсь использовать поляры для агрегирования окна по одному значению, но сопоставляю его обратно с другим.
Например, если я хочу получить имя максимального значения в группе вместо (или в сочетании) только максимального значения.
предполагая ввод чего-то вроде этого.
df = pl.from_repr("""
┌───────┬──────┬───────┐
│ label ┆ name ┆ value │
│ --- ┆ --- ┆ --- │
│ str ┆ str ┆ f64 │
╞═══════╪══════╪═══════╡
│ a. ┆ foo ┆ 1.0 │
│ a. ┆ bar ┆ 2.0 │
│ b. ┆ baz ┆ 1.5 │
│ b. ┆ boo ┆ -1.0 │
└───────┴──────┴───────┘
""")

# 'max_by' is not a real method, just using it to express what i'm trying to achieve.
df.select(pl.col('label'), pl.col('name').max_by('value').over('label'))

мне нужен такой результат
shape: (2, 2)
┌───────┬──────┐
│ label ┆ name │
│ --- ┆ --- │
│ str ┆ str │
╞═══════╪══════╡
│ a. ┆ bar │
│ b. ┆ baz │
└───────┴──────┘

в идеале тоже со значением. Но я знаю, что могу легко добавить это через pl.col('value').max().over('label').
shape: (2, 3)
┌───────┬──────┬───────┐
│ label ┆ name ┆ value │
│ --- ┆ --- ┆ --- │
│ str ┆ str ┆ f64 │
╞═══════╪══════╪═══════╡
│ a. ┆ bar ┆ 2.0 │
│ b. ┆ baz ┆ 1.5 │
└───────┴──────┴───────┘


Подробнее здесь: https://stackoverflow.com/questions/720 ... -in-polars
Ответить

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

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

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

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

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