- 学习:知识的初次邂逅
- 复习:知识的温故知新
- 练习:知识的实践应用
目录
一,原题力扣链接
二,题干
员工表:
Employee
+---------------+---------+ | Column Name | Type | +---------------+---------+ | employee_id | int | | team_id | int | +---------------+---------+ employee_id 字段是这张表的主键(具有唯一值的列) 表中的每一行都包含每个员工的 ID 和他们所属的团队。编写解决方案以求得每个员工所在团队的总人数。
返回结果表 无顺序要求 。
返回结果格式示例如下:
示例 1:
输入: Employee Table: +-------------+------------+ | employee_id | team_id | +-------------+------------+ | 1 | 8 | | 2 | 8 | | 3 | 8 | | 4 | 7 | | 5 | 9 | | 6 | 9 | +-------------+------------+ 输出: +-------------+------------+ | employee_id | team_size | +-------------+------------+ | 1 | 3 | | 2 | 3 | | 3 | 3 | | 4 | 1 | | 5 | 2 | | 6 | 2 | +-------------+------------+ 解释: ID 为 1、2、3 的员工是 team_id 为 8 的团队的成员, ID 为 4 的员工是 team_id 为 7 的团队的成员, ID 为 5、6 的员工是 team_id 为 9 的团队的成员。
三,建表语句
import pandas as pd
data = [[1, 8], [2, 8], [3, 8], [4, 7], [5, 9], [6, 9]]
employee = pd.DataFrame(data, columns=['employee_id', 'team_id']).astype({'employee_id':'Int64', 'team_id':'Int64'})
四,分析
第一步分组聚合 以团队id分组 求团队人数
df=employee.groupby(by='team_id').count() #分组 聚合求count次数
第二步,内连接查询的结果和原表
df2 = pd.merge(employee,df,how='inner',on='team_id') #内连接一下
第三步,取对应的列,并且改名即可
df=employee.groupby(by='team_id').count() #分组 聚合求count次数
df2 = pd.merge(employee,df,how='inner',on='team_id') #内连接一下
df3=df2[['employee_id_x','employee_id_y']] #取最终要的两列
df4 = df3.rename(columns={'employee_id_x':'employee_id','employee_id_y':'team_id'}) #改名一下
df4 #最后输出
五,Pandas解答
import pandas as pd
def team_size(employee: pd.DataFrame) -> pd.DataFrame:
df=employee.groupby(by='team_id').count() #分组 聚合求count次数
df2 = pd.merge(employee,df,how='inner',on='team_id') #内连接一下
df3=df2[['employee_id_x','employee_id_y']] #取最终要的两列
df4 = df3.rename(columns={'employee_id_x':'employee_id','employee_id_y':'team_size'}) #改名一下
return df4
六,验证
七,知识点总结
- Pandas分组聚合的运用 API:groupby
- Pandas内连接的运用 API:marge
- Pandas改名的运用 API:raname
- python函数的运用
- 学习:知识的初次邂逅
- 复习:知识的温故知新
- 练习:知识的实践应用