本文主要是介绍每日一题36:数据分组之科目种类数量,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、每日一题
表: Teacher
+-------------+------+ | Column Name | Type | +-------------+------+ | teacher_id | int | | subject_id | int | | dept_id | int | +-------------+------+ 在 SQL 中,(subject_id, dept_id) 是该表的主键。 该表中的每一行都表示带有 teacher_id 的教师在系 dept_id 中教授科目 subject_id。
查询每位老师在大学里教授的科目种类的数量。
以 任意顺序 返回结果表。
查询结果格式示例如下。
示例 1:
输入: Teacher 表: +------------+------------+---------+ | teacher_id | subject_id | dept_id | +------------+------------+---------+ | 1 | 2 | 3 | | 1 | 2 | 4 | | 1 | 3 | 3 | | 2 | 1 | 1 | | 2 | 2 | 1 | | 2 | 3 | 1 | | 2 | 4 | 1 | +------------+------------+---------+ 输出: +------------+-----+ | teacher_id | cnt | +------------+-----+ | 1 | 2 | | 2 | 4 | +------------+-----+ 解释: 教师 1:- 他在 3、4 系教科目 2。- 他在 3 系教科目 3。 教师 2:- 他在 1 系教科目 1。- 他在 1 系教科目 2。- 他在 1 系教科目 3。- 他在 1 系教科目 4。
解答:
import pandas as pd# 创建Teacher表的数据
data = {'teacher_id': [1, 1, 1, 2, 2, 2, 2],'subject_id': [2, 2, 3, 1, 2, 3, 4],'dept_id': [3, 4, 3, 1, 1, 1, 1]
}# 创建DataFrame
df = pd.DataFrame(data)# 使用drop_duplicates去掉重复的(teacher_id,subject_id)组合
unique_subjects = df[['teacher_id', 'subject_id']].drop_duplicates()# 分组并统计每个teacher_id教授的unique_subject_id数量
result = unique_subjects.groupby('teacher_id')['subject_id'].count().reset_index()# 重命名列
result.columns = ['teacher_id', 'cnt']print(result)
题源:Leetcode
二、总结
drop_duplicates()和groupby()的用法。
2024.6.8
这篇关于每日一题36:数据分组之科目种类数量的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!