如果用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]
网友评论