如何使用熊猫将成绩转换为积分?
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
【讨论】:
以上是关于如何使用熊猫将成绩转换为积分?的主要内容,如果未能解决你的问题,请参考以下文章
如何将调查熊猫数据框转换为可用于 Python 中的 BI 工具的不同格式?