如何将混合CGPA与百分比值的10_grade列转换为百分比?求Python实现代码
解决混合百分比与CGPA数据的统一转换问题
我来帮你搞定这个问题!处理混合了百分比和CGPA的成绩列确实有点棘手,不过用Python的Pandas库可以轻松实现统一转换。这里默认你的CGPA是印度CBSE体系的10分制(这是10年级成绩最常见的情况),CGPA转百分比的公式是 CGPA × 9.5 —— 如果你的评分体系不同,只需要替换这个转换系数就行。
实现步骤与代码
首先,我们需要先区分每个条目是CGPA还是百分比,再针对性转换。以下是完整的可运行代码:
import pandas as pd # 模拟你的数据集(实际使用时替换成你读取的真实数据,比如pd.read_csv("your_data.csv")) data = { "10_grade": [85, "92%", 8.7, "7.5", "88%", 9.3, 78] } df = pd.DataFrame(data) def convert_to_percentage(grade): # 处理字符串类型的输入,先清理并转换为数值 if isinstance(grade, str): # 去掉百分号,转换为浮点数 grade = grade.replace("%", "").strip() try: grade = float(grade) except ValueError: # 如果无法转换为数值,返回NaN方便后续清理 return pd.NA # 判断是CGPA还是百分比:CGPA通常在0-10之间(10分制) if 0 <= grade <= 10: # CGPA转百分比(CBSE体系用9.5,其他体系可修改系数) return grade * 9.5 else: # 已经是百分比,直接返回 return grade # 应用转换函数到目标列,生成统一的百分比列 df["10_grade_percentage"] = df["10_grade"].apply(convert_to_percentage) # 查看转换后的结果 print(df)
代码细节说明
- 数据预处理:先处理字符串格式的成绩(比如带%的百分比),去掉符号后转换为数值,同时处理无效值(返回
pd.NA,方便后续用dropna()清理)。 - 判断逻辑:通过数值范围区分CGPA(0-10)和百分比(大于10的数值),如果是CGPA就用对应公式转换,否则直接保留原百分比数值。
- 灵活调整:如果你的CGPA是其他体系(比如4分制),只需要修改判断范围(比如
0 <= grade <=4)和转换系数(比如grade ×25)即可。
内容的提问来源于stack exchange,提问作者GURPINDER SINGH MUTTAR
相关产品推荐
相关产品推荐

