Как фильтровать кадр данных поляров по первому максимальному значению при использовании over?Python

Программы на Python
Ответить
Anonymous
 Как фильтровать кадр данных поляров по первому максимальному значению при использовании over?

Сообщение Anonymous »

Я пытаюсь отфильтровать кадр данных, чтобы найти первое появление максимального значения в столбце категории. В моих данных нет гарантии, что существует одно уникальное максимальное значение, их может быть несколько значений, но мне нужно только первое появление.
Тем не менее, я не могу найти способ ограничить максимальную часть фильтра, в настоящее время я добавляю дополнительный фильтр в другой столбец, обычно основанный на времени, и беру минимальное значение.

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

import polars as pl

df = pl.DataFrame(
{
"cat": [1, 1, 1, 2, 2, 2, 2, 3, 3, 3],
"max_col": [12, 24, 36, 15, 50, 50, 45, 20, 40, 60],
"other_col": [25, 50, 75, 125, 150, 175, 200, 225, 250, 275],
}
)

df = df.filter(pl.col("max_col") == pl.col("max_col").max().over("cat")).filter(
pl.col("other_col") == pl.col("other_col").min().over("cat")
)

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

shape: (3, 3)
┌─────┬─────────┬───────────┐
│ cat ┆ max_col ┆ other_col │
│ --- ┆ ---     ┆ ---       │
│ i64 ┆ i64     ┆ i64       │
╞═════╪═════════╪═══════════╡
│ 1   ┆ 36      ┆ 75        │
│ 2   ┆ 50      ┆ 150       │
│ 3   ┆ 60      ┆ 275       │
└─────┴─────────┴───────────┘
Однако я бы предпочел упростить приведенное выше, чтобы требовалось передавать только ссылки на столбцы «Максимум» и «Категория».
Я упускаю здесь что-то очевидное?

Подробнее здесь: https://stackoverflow.com/questions/785 ... using-over
Ответить

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

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

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

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

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