在Pandas DataFrame中筛选指定学生并实现CSC103成绩条件判断
解决Pandas筛选学生并判断成绩的问题
先帮你梳理下原代码里的两处关键问题,再给出修正后的完整实现:
原代码的问题点
- 注册编号
FA15-BSE-081是字符串类型,必须用单/双引号包裹,否则Python会把它当成变量减法运算,直接报错 - 筛选后得到的
df是单行DataFrame,直接用df.CSC103 >=70会返回布尔Series,放在if条件里会触发Pandas警告,需要提取单个标量值判断
修正后的完整代码
import pandas as pd # 读取目标Excel文件及工作表 df_xlsx = pd.read_excel('/content/FA15-BSE.xlsm', sheet_name='Final') # 筛选指定注册编号的学生数据(注意字符串要加引号) target_student = df_xlsx[df_xlsx['Registration#'] == 'FA15-BSE-081'] # 先判断是否找到对应学生,避免空数据报错 if not target_student.empty: # 提取该学生CSC103科目的成绩(取第一行的标量值) csc_score = target_student['CSC103'].iloc[0] if csc_score >= 70: print('hi') else: print("未找到注册编号为FA15-BSE-081的学生")
额外优化说明
- 加入了空DataFrame检查:防止找不到对应学生时,后续取成绩的操作抛出异常
- 用
iloc[0]提取单个成绩值:把Series转为标量,消除if判断时的Pandas警告
内容的提问来源于stack exchange,提问作者Osama Billah
相关产品推荐
相关产品推荐

