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

Python筛选Excel中1990年出生学生数据的代码问题求助

修正代码及问题说明

原代码的问题

  1. 变量名错误:print(stud_name.iloc[101:200])里的stud_name未定义,正确名称应为前面的stud_dtl_name
  2. 布尔索引误用:(stud_dtl['DateOfBirth'].dt.year==1990).any()会把整列的判断结果压缩成单个布尔值,导致loc错误地进行列筛选,而我们需要的是每行的布尔判断结果来筛选行
  3. 逻辑偏差:需求是筛选符合条件的学生行,再提取指定列,原代码搞反了行和列的筛选逻辑

修正后的代码

# 读取学生数据工作表
stud_dtl = stud_dataset.parse('Students')

# 确保出生日期列是日期格式(若Excel未自动识别需手动转换)
stud_dtl['DateOfBirth'] = pd.to_datetime(stud_dtl['DateOfBirth'])

# 生成筛选条件:出生日期年份为1990
is_1990_born = stud_dtl['DateOfBirth'].dt.year == 1990

# 用loc筛选符合条件的行,同时只保留需要的三列
target_students = stud_dtl.loc[is_1990_born, ['FirstName', 'LastName', 'DateOfBirth']]

# 输出结果
print(target_students)

核心要点

  • 必须保证DateOfBirth是日期类型,否则.dt.year会报错,所以加了pd.to_datetime()做安全转换
  • loc[行筛选条件, 列名列表]是pandas精准筛选行和列的标准写法,第一个参数控制选哪些行,第二个参数控制选哪些列
  • 若需要查看结果的特定行范围,可直接在target_students上用iloc,比如print(target_students.iloc[0:10])

内容的提问来源于stack exchange,提问作者python learner

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 03:22:47