我正在尝试使用字典和 map 方法替换 pandas 数据框中的列。我找到了一个没有 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
最佳答案
如果输出中缺少值,则意味着字典的键与列的值不匹配。
如果列中出现空格问题,请使用 Series.str.strip
:
df["Grade"] = df["Grade"].str.strip().map(usa_grade_dict)
关于python-3.x - 无法用 map 替换 pandas 数据框列中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57590299/