部门工资最高的员工

表: Employee

+--------------+---------+
| 列名          | 类型    |
+--------------+---------+
| id           | int     |
| name         | varchar |
| salary       | int     |
| departmentId | int     |
+--------------+---------+
在 SQL 中,id是此表的主键。
departmentId 是 Department 表中 id 的外键(在 Pandas 中称为 join key)。
此表的每一行都表示员工的 id、姓名和工资。它还包含他们所在部门的 id。

表: Department

+-------------+---------+
| 列名         | 类型    |
+-------------+---------+
| id          | int     |
| name        | varchar |
+-------------+---------+
在 SQL 中,id 是此表的主键列。
此表的每一行都表示一个部门的 id 及其名称。

查找出每个部门中薪资最高的员工。
按 任意顺序 返回结果表。

解题思路:

 1.将两张表进行关联

2.分组,找出每个部门的最大值

3.改列名

# 两张表进行关联
df = pd.merge(left = employee, right = department, left_on = 'departmentId', right_on = 'id', how = 'inner')
# 根据departmentId进行分组
df_g = df.groupby('departmentId')
# 选取每个组的salary最大值,得到的是一个series
df_salary = df_g['salary'].transform('max')
# 将原始结合表中salary值等于每个组的最大值的筛选出来
df_salary_max = df[df['salary'] == df_salary]
# 筛选列并改名称
df_salary_max = df_salary_max[['name_y', 'name_x', 'salary']].rename(columns={'name_y':'Department', 'name_x':'Employee', 'salary':'Salary'})

# transform的详细解释:
transform() 是 Pandas 中的一个函数,它用于对指定的数据进行转换或操作,并返回与原始输入数据具有相同索引的结果。

transform() 函数通常与 groupby() 结合使用。当我们想要将一些聚合计算的结果(如均值、总和、最大值等)应用到每个组的所有元素上时,可以使用 transform() 函数。

下面是 transform() 函数的详细解释:

语法:

python
DataFrame.transform(func, axis=0, *args, **kwargs)
参数:

func:要应用于每个组的转换函数。
axis:指定沿着行轴(0)还是列轴(1)应用转换,默认为 0。
*args 和 **kwargs:可选的附加参数,传递给 func 函数。
返回值:
与原始输入具有相同索引的数据。

使用 transform() 函数的主要特点是,它会对每个组内的所有元素进行转换,并根据原始数据的索引将转换结果放置在相应的位置上。这与 agg() 或 apply() 函数不同,后者们只返回聚合计算的结果而不保留原始数据的结构。

以下是一个示例代码,演示如何使用 transform() 函数计算每个组的均值并将结果分配给每个元素:

python
import pandas as pd

# 创建示例数据框
data = {'Group': ['A', 'A', 'B', 'B', 'B'],
        'Value': [1, 2, 3, 4, 5]}
df = pd.DataFrame(data)

# 使用 transform() 计算每个组的均值并分配给每个元素
df['Mean'] = df.groupby('Group')['Value'].transform('mean')

print(df)
输出结果:

  Group  Value  Mean
0     A      1   1.5
1     A      2   1.5
2     B      3   4.0
3     B      4   4.0
4     B      5   4.0
在上面的示例中,我们使用 transform() 函数计算了每个组的均值,并将结果赋给了新的列 'Mean'。可以看到,均值被正确地分配给了每个元素,并且保留了原始数据的结构。

transform() 函数在进行逐组计算时非常有用,尤其是当你希望将聚合结果与原始数据的相应元素相关联时。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值