如何使用熊猫将成绩转换为积分?

Posted

技术标签:

【中文标题】如何使用熊猫将成绩转换为积分?【英文标题】:How to convert grades into points using pandas? 【发布时间】:2020-10-10 03:53:54 【问题描述】:

我的代码在运行时返回错误。为什么会这样?

import pandas as pd

df1 = pd.read_csv('sample.csv')

points = [0,1,2,3,4,5,6,7,8,9,10,11,12]
bins = ['X','E','D-','D','D+','C-','C','C+','B-','B','B+','A-','A']
df1['DA'] = pd.cut(df1.AA,bins,labels=points)
df1['DE'] = pd.cut(df1['BB'],bins,labels=points)
df1['CDI'] = pd.cut(df1.CC,bins,labels=points)

错误

ValueError: could not convert string to float: 'X'

编辑 这些是我想转换为分数的学生成绩。就像A级是12分一样...

【问题讨论】:

bins 必须是数字 bin 边界。你想做什么? (import csv 的意义何在?) 由于我们无法采样sample.csv,我们无法告诉您问题所在。 @cs95,sample.csv 包含学生成绩,没有姓名,只有成绩。 哦,我明白了。您不小心互换了 points 和 bins 参数。我认为应该可以解决它。 这不是偶然的。我有 iny csv 是要更改为分数的成绩。我觉得应该是这样安排的?除非这样的操作是不可能的。 【参考方案1】:

您可以尝试改用replace。首先创建一个包含您要应用的转换的字典,然后您可以创建列

# Sample DataFrame
df = pd.DataFrame('AA': ['X','E','D-','D','D+','C-','C','C+','B-','B','B+','A-','A'])

# conversion dict
points = [0,1,2,3,4,5,6,7,8,9,10,11,12]
grades = ['X','E','D-','D','D+','C-','C','C+','B-','B','B+','A-','A']
conversion = dict(zip(grades, points))

# applying conversion
df['DA'] = df.AA.replace(conversion)

DataFrame 现在看起来像:

    AA  DA
0   X   0
1   E   1
2   D-  2
3   D   3
4   D+  4
5   C-  5
6   C   6
7   C+  7
8   B-  8
9   B   9
10  B+  10
11  A-  11
12  A   12

【讨论】:

以上是关于如何使用熊猫将成绩转换为积分?的主要内容,如果未能解决你的问题,请参考以下文章

如何将熊猫中的timedelta列转换为字符串

如何将熊猫数据透视表转换为 JSON [重复]

如何将熊猫中的日期时间列全部转换为同一时区

如何将调查熊猫数据框转换为可用于 Python 中的 BI 工具的不同格式?

给定一个代表值频率的熊猫系列,我如何将这些频率转换为百分比?

如何将列表列表转换为数据框?(熊猫)