python-3.x - 无法用 map 替换 pandas 数据框列中的值

标签 python-3.x pandas dataframe

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

相关文章:

python - 如何在 turtle 图形中将多个按键绑定(bind)在一起?

python - 将十六进制转换为 Base64 的项目

python-3.x - 如何在查看前几行值的每一行中执行代码的同时,高效地逐行遍历 pandas 数据框?

python - Pandas - 如何对多个变量进行分组和拆分?

python - 具有排序值的 Pandas 堆叠条形图

Python Pandas 将多列零替换为 Nan

python - 将字符串转换为日期并删除数据框一列中的非日期

python - openpyxl 数据透视表和 pandas 数据透视表

python - 基于对多列 pandas python 的逻辑操作更新另一列

python - 生成已知总数的随机整数数组