无法用地图替换pandas数据框列中的值

时间:2019-08-21 11:09:40

标签: python-3.x pandas dataframe

我正在尝试使用字典和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

1 个答案:

答案 0 :(得分:2)

如果在输出中缺少值,则意味着字典的键与列的值不匹配。

如果列中的空格有问题,请使用Series.str.strip

df["Grade"] = df["Grade"].str.strip().map(usa_grade_dict)