Однако я не могу найти способ ограничить максимальную часть фильтра, в настоящее время я добавляю дополнительный фильтр в другой столбец, обычно основанный на времени, и беру минимальное значение.
Код: Выделить всё
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