Группирования с исключением по столбцам

Имеется df следующего вида:

qw er ty yu io
12 23 34 45 1
12 23 34    2
34 56 42 45 2
34 56 42    1

Как сгруппировать, чтобы таблица имела следующий вид:

qw er ty yu io
12 23 34    2
34 56 42 45 2

Соотвественно, группировка Max(io), но с сохранением значения строки и колонки yu.


Ответы (1 шт):

Автор решения: MaxU

Если я правильно понял суть вопроса - вам нужно отфильтровать исходный фрейм таким образом, чтобы получить строки с максимальным значением io.

Пример исходного фрейма:

In [36]: df
Out[36]:
   qw  er  ty    yu  io
0  12  23  34  45.0   1
1  12  23  34   NaN   2
2  34  56  42  45.0   2
3  34  56  42   NaN   1

решение:

res = df.query("io == io.max()")

результат:

In [37]: res
Out[37]:
   qw  er  ty    yu  io
1  12  23  34   NaN   2
2  34  56  42  45.0   2

PS группировка подразумевает минимум две операции:

  • группирование данных по ключу/ключам
  • применение агрегирующих функций к группе строк - в результате чего мы получаем одну строку результата для каждой группы

Поэтому описание в вашем вопросе не совсем правильное. То что вы хотите сделать - это не группировка а фильтрование или выборка по условию.

→ Ссылка