力扣:181. 超过经理收入的员工(Python3)
题目:
表:
Employee
+-------------+---------+ | Column Name | Type | +-------------+---------+ | id | int | | name | varchar | | salary | int | | managerId | int | +-------------+---------+ id 是该表的主键(具有唯一值的列)。 该表的每一行都表示雇员的ID、姓名、工资和经理的ID。编写解决方案,找出收入比经理高的员工。
以 任意顺序 返回结果表。
结果格式如下所示。
来源:力扣(LeetCode)
链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台
示例:
示例 1:
输入:
Employee 表: +----+-------+--------+-----------+ | id | name | salary | managerId | +----+-------+--------+-----------+ | 1 | Joe | 70000 | 3 | | 2 | Henry | 80000 | 4 | | 3 | Sam | 60000 | Null | | 4 | Max | 90000 | Null | +----+-------+--------+-----------+
输出:+----------+ | Employee | +----------+ | Joe | +----------+
解释:Joe 是唯一挣得比经理多的雇员。
解法:
把表转成字典,键是id列,剩下地列作为值。
代码:
import pandas as pd def find_employees(employee: pd.DataFrame) -> pd.DataFrame: dic = dict(zip(employee['id'], zip(employee['name'], employee['salary'], employee['managerId']))) return pd.DataFrame({'Employee': [v[0] for k, v in dic.items() if v[2] in dic and v[1] > dic[v[2]][1]]})