Полярные поля получают сгруппированные строки, где значение столбца максимальное.Python

Программы на Python
Ответить
Anonymous
 Полярные поля получают сгруппированные строки, где значение столбца максимальное.

Сообщение Anonymous »

Рассмотрите этот фрагмент

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

import polars as pl

df = pl.DataFrame({'class': ['a', 'a', 'b', 'b'], 'name': ['Ron', 'Jon', 'Don', 'Von'], 'score': [0.2, 0.5, 0.3, 0.4]})
df.group_by('class').agg(pl.col('score').max())
Это дает мне:

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

shape: (2, 2)
┌───────┬───────┐
│ class ┆ score │
│ ---   ┆ ---   │
│ str   ┆ f64   │
╞═══════╪═══════╡
│ a     ┆ 0.5   │
│ b     ┆ 0.4   │
└───────┴───────┘
Но мне нужна вся строка группы, соответствующая максимальному баллу. Я могу выполнить соединение с исходным фреймом данных, например

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

sdf = df.group_by('class').agg(pl.col('score').max())
sdf.join(df, on=['class', 'score'])
Чтобы получить

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

shape: (2, 3)
┌───────┬───────┬──────┐
│ class ┆ score ┆ name │
│ ---   ┆ ---   ┆ ---  │
│ str   ┆ f64   ┆ str  │
╞═══════╪═══════╪══════╡
│ a     ┆ 0.5   ┆ Jon  │
│ b     ┆ 0.4   ┆ Von  │
└───────┴───────┴──────┘
Есть ли способ избежать объединения и включить столбец имени в состав агрегирования по группам?

Подробнее здесь: https://stackoverflow.com/questions/728 ... is-maximum
Ответить

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

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

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

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

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