我正在尝试使用字典和map方法替换熊猫数据框中的一列。我发现了一个没有map的方法,但是它非常丑陋
这是我的字典
{'A+': '97–100%',
'A': '93–96%',
'A−': '90–92%',
'B+': '87–89%',
'B': '83–86%',
'B−': '80–82%',
'C+': '77–79%',
'C': '73–76%',
'C-': '70–72%',
'D+': '67–69%',
'D': '63–66%',
'D-': '60–62%',
'F': '0–59%'}
这是我的数据框
Fname Lname MidExam FinalExam CW1 CW2 TotalPoints StudentAverage Grade
1 Velma Paul 49% 66% 59% 78% 252 63.00% D
2 Kibo Mcgee 75% 75% 68% 66% 284 71.00% C-
3 Louis Underwood 98% 44% 67% 42% 251 62.75% D-
4 Phyllis Clemons 65% 45% 65% 55% 230 57.50% F
5 Zenaida Mcdowell 65% 54% 65% 54% 238 59.50% F
我想用数字替换字母D,F,...
我使用后
df["Grade"] = df["Grade"].map(usa_grade_dict)
我得到
Fname Lname MidExam FinalExam CW1 CW2 TotalPoints StudentAverage Grade
1 Velma Paul 49% 66% 59% 78% 252 63.00% NaN
2 Kibo Mcgee 75% 75% 68% 66% 284 71.00% NaN
3 Louis Underwood 98% 44% 67% 42% 251 62.75% NaN
4 Phyllis Clemons 65% 45% 65% 55% 230 57.50% NaN
5 Zenaida Mcdowell 65% 54% 65% 54% 238 59.50% NaN
我不知道为什么我得到NaN而不是实际数字 任何帮助都会很棒^^ Ty
答案 0 :(得分:2)
如果在输出中缺少值,则意味着字典的键与列的值不匹配。
如果列中的空格有问题,请使用Series.str.strip
:
df["Grade"] = df["Grade"].str.strip().map(usa_grade_dict)