【发布时间】:2021-12-02 04:42:33
【问题描述】:
我正在努力寻找工资高于部门平均工资的员工,但我在 Pandas 中遇到了一些麻烦。
在 SQL 中,我的查询如下所示:
SELECT name, department, salary
FROM employees e1
WHERE salary > (SELECT AVG(salary) FROM employees e2 WHERE e1.department = e2.department)
这是我在 Pandas 中的尝试:
df.groupby(['Department']).filter(lambda x: df['salary'] > x.salary.mean())[['Name', 'Salary']]
我收到以下错误,我假设它来自过滤器子句中的 df['salary']:
过滤器函数返回一个系列,但需要一个标量布尔
【问题讨论】:
-
df.loc[df["Salary"]>df.groupby("Department")["Salary"].transform("mean")]?
标签: python sql pandas dataframe filtering