Найти в Дзене
Learning to Python

Максимальные зарплаты в LeetCode 184

Всем привет!

Сегодня решал задачу из сборника «30 days of Pandas». Там в списке осталось меньше трети, поэтому собираюсь закончить с ним в ближайшее время.

Конечно эти задачи не самые интересные, но говорят, что Pandas очень полезная библиотека.

Задача опять про зарплату. Нужно было найти кто и в каком департаменте получает больше всего. Сложность в задаче составляли:

- необходимость совместить две таблицы с необходимыми данными (это я уже умею);

- найти максимальные зарплаты (с этим тоже без проблем справился);

- не выкидывать из таблицы одинаковые значения, если они равны максимальным (вот с этим было сложно).

Как я и сказал, найти максимальные зарплаты просто. Нужно применить метод .groupby() к необходимой колонке (номер департамента) и функцию .max(). Это позволит получить таблицу, в которой останется только по одной строке для каждого департамента. Проблема в том, что в задаче в одном из департаментов у двух сотрудников такая зарплата.

Поэтому приходится делать дополнительны действия. Мне тут пришлось попотеть и даже подсмотреть подход в ролике одного индуса (заодно попрактиковался в аудировании этого акцента)

Простое решение
Простое решение

Подход такой: добавляем в общую таблицу колонку с максимальной зарплатой для каждого департамента (метод .merge()). С помощью этой информации фильтруем полученную таблицу.

Затем опять же с помощью .merge() добавляем в таблицу данные о названии департаментов и выдаем результат (в нужном формате)

Тоже самое можно сделать с помощью метода apply() и lambda функции. Логика там такая же, просто нужно разбираться в синтаксисе lambda.

Решение с помощью метода apply() и lambda функции
Решение с помощью метода apply() и lambda функции

Это я уже скопировал у индуса.

-4

Оба решения получаются примерно одинаково эффективными.

На сегодня все…

До скорого