You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Pandas生成含全部学生及学期的课程数统计表格?

解决Pandas生成学生全学期课程统计表格的问题

步骤1:统计已有学生的各学期课程数量

先对原始数据按student和course(对应学期)分组,统计每组的课程总数:

import pandas as pd

# 原始数据
df1 = pd.DataFrame({'student': ['A01','A01','A01','A02','A02','A04','A04','A04'],
                    'course': ['0', '3', '4', '2', '2', '0', '2', '4']})

# 转换course为整数类型,方便后续匹配
df1['course'] = df1['course'].astype(int)

# 统计每个学生每学期的课程数
course_counts = df1.groupby(['student', 'course']).size().reset_index(name='course_count')

步骤2:生成完整的学生编号列表

从原始数据中提取学生编号的数字部分,生成连续的完整学生编号:

# 提取学生编号的数字并转为整数
student_nums = [int(s[1:]) for s in df1['student'].unique()]
min_num = min(student_nums)
max_num = max(student_nums)

# 生成格式为A+两位数字的连续学生编号
all_students = [f'A{num:02d}' for num in range(min_num, max_num+1)]

步骤3:生成所有学生与全学期的笛卡尔积

构建包含所有学生和0-4学期的完整表格框架:

# 定义所有学期
all_semesters = [0,1,2,3,4]

# 生成学生与学期的笛卡尔积
full_index = pd.MultiIndex.from_product([all_students, all_semesters], names=['student', 'semester'])
full_df = pd.DataFrame(index=full_index).reset_index()

步骤4:合并数据并填充缺失值

将统计的课程数与完整框架合并,缺失的课程数填充为0:

# 匹配学生和学期,合并数据
result = pd.merge(full_df, course_counts, left_on=['student', 'semester'], right_on=['student', 'course'], how='left')

# 填充缺失值为0,清理多余列并调整列顺序
result['course_count'] = result['course_count'].fillna(0).astype(int)
result = result.drop('course', axis=1)[['student', 'semester', 'course_count']]

最终结果

运行上述代码后,result即为目标DataFrame:

print(result)

输出:

student  semester  course_count
0       A01         0             1
1       A01         1             0
2       A01         2             0
3       A01         3             1
4       A01         4             1
5       A02         0             0
6       A02         1             0
7       A02         2             2
8       A02         3             0
9       A02         4             0
10      A03         0             0
11      A03         1             0
12      A03         2             0
13      A03         3             0
14      A03         4             0
15      A04         0             1
16      A04         1             0
17      A04         2             1
18      A04         3             0
19      A04         4             1

内容的提问来源于stack exchange,提问作者Jason Shi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 09:00:51