4,Python数分之Pandas训练,力扣,1303. 求团队人数

  • 学习:知识的初次邂逅
  • 复习:知识的温故知新
  • 练习:知识的实践应用

目录

一,原题力扣链接

二,题干

三,建表语句

四,分析

五,Pandas解答

六,验证

七,知识点总结


一,原题力扣链接

. - 力扣(LeetCode)

二,题干

员工表: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函数的运用

  • 学习:知识的初次邂逅
  • 复习:知识的温故知新
  • 练习:知识的实践应用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值