美文网首页
对一行数据中的内容进行判断,并新增列,填写对应的数据

对一行数据中的内容进行判断,并新增列,填写对应的数据

作者: Noza_ea8f | 来源:发表于2020-10-16 10:11 被阅读0次

    如果用xlwt或者openpyxl,那么我们可以轻松对单元格进行操作;
    但是在pnadas怎么做呢?
    首先pandas非常强大;
    但是在理解上不是那么直观;


    image.png

    针对这样的数据,我需要判断学号和课程ID,
    然后在后面追加一列,填上该考生对应的成绩;
    成绩需要在另一张表中进行查询;

    上代码:
    首先打开数据表

    path1 = '报考数据.xlsx'
    path2 = 'zxkscj.xlsx'
    
    # 打开“报考数据”表
    df1 = pd.read_excel(io=path1, sheet_name='报考记录10081条', converters={'学号': str, '班代码': str})
    
    # 拆分课程名称,这步操作是要分割出课程ID
    df1_ = df1['课程名称'].str.split('-', expand=True)
    # 增加'课程ID'列
    df1['课程ID'] = df1_[0]
    

    这步很关键

    # 增加‘成绩’列
    df1['成绩'] = ''
    
    # 打开“zxkscj”表
    wb = xlrd.open_workbook(path2)
    table = wb.sheet_by_name('sheet1')  # 通过名称获取
    # 获取最大行数
    rows = table.nrows
    
    # 遍历所有考生,获取所有考生成绩
    for i in df1.index:
        print(f'正在处理第{i + 1}条数据...')
        # 读取学号
        stu_mum = df1.loc[i].values[1]
        # 课程ID
        class_id = df1.loc[i].values[6]
        # 获取并修改考生成绩信息等
        try:
            df1.loc[i, '成绩'] = search_stu_score(stu_mum, class_id, rows)[4]
        except Exception as e:
            pass
    
    print(df1)
    df1.to_excel('result.xlsx', index=False)
    

    这句是给对应的考生添加成绩

    df1.loc[i, '成绩'] = search_stu_score(stu_mum, class_id, rows)[4]
    

    相关文章

      网友评论

          本文标题:对一行数据中的内容进行判断,并新增列,填写对应的数据

          本文链接:https://www.haomeiwen.com/subject/pjxzpktx.html