Сотрудники, зарабатывающие больше своего менеджера
В employee столбцы id, name, salary, managerId (самоссылка: managerId строки — это id другой строки). Верните DataFrame с именами сотрудников, чья зарплата строго больше зарплаты их менеджера.
import pandas as pd
def higher_than_manager(employee: pd.DataFrame) -> pd.DataFrame:
# ваш код здесь
Напишите реализацию.
Самообъединяют таблицу по managerId == id, чтобы поставить каждого сотрудника рядом с его менеджером, затем фильтруют, где зарплата сотрудника больше менеджерской. Ключ объединения связывает менеджера строки с его собственной строкой, ставя две зарплаты рядом.
- ✗Сравнивать со средним по команде или глобально вместо менеджера
- ✗Забыть самообъединение, чтобы поставить зарплату менеджера рядом
- ✗Считать, что больше менеджера может лишь один подчинённый
- →Почему join использует left_on managerId и right_on id?
- →Что станет с сотрудниками, у которых managerId пустой?
Bring each employee's manager onto the same row with a self-merge, then compare salaries.
import pandas as pd
def higher_than_manager(employee: pd.DataFrame) -> pd.DataFrame:
merged = employee.merge(
employee, left_on='managerId', right_on='id', suffixes=('_e', '_m'))
out = merged[merged['salary_e'] > merged['salary_m']]
return out[['name_e']].rename(columns={'name_e': 'name'})
The merge matches each employee row's managerId to the id of their manager's row, so salary_e and salary_m sit side by side. Employees with a null managerId have no match in an inner merge and are correctly excluded.