我有一个数据框,DF,类似于下面的。将字母等级转换为GPA:我的代码出了什么问题?
ID SUBJ GRADE
1 Amer Natl Govt A
2 Princ Of Macroecon B
3 General Biology B
4 Concept Of Chem C
5 General Chem C
我只是想将字母等级(GRADE)转换为成绩平均值。
我写了下面的代码,它总是返回所有行的异常2.3,就好像我的元组列表中的字母的数据类型与我的数据框中的类型不同,但它们都是字符串。有人能告诉我我的代码有问题吗?谢谢。
def getGradePoint(row):
grades = [('A+', 4.0), ('A', 4.0), ('A-', 3.7), ('B+',3.3), ('B',3.0), ('B-',2.7), ('C+',2.3), ('C',2.0),\
('C-',1.7),('D+',1.3),('D',1.0),('D-',0.7),('F',0.0)]
for i in range(len(grades)):
if row == grades[i][0]:
return grades[i][1]
else:
return 2.3
df['GRADE_PT'] = df['GRADE'].apply(getGradePoint)
ID SUBJ GRADE GPA
1 Amer Natl Govt A 2.3
2 Princ Of Macroecon B 2.3
3 General Biology B 2.3
4 Concept Of Chem C 2.3
5 General Chem C 2.3