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

2020-10-16  本文已影响0人  Noza_ea8f

如果用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]
上一篇 下一篇

猜你喜欢

热点阅读