我们正在尝试创建一个函数,它接受输入,一些数据包含以下信息: ID号,姓名,以及包含不同作业成绩的多个列,然后按字母顺序(根据名称)对数据进行排序,然后显示添加了列的数据,该列还显示最终成绩(我们使用另一个函数计算)。我们试着写了下面的代码,但是不能让它工作...给出的错误消息是"names = GRADESdata[:,1].tolist() TypeError: string indices must be integers".
有人能帮我们弄清楚如何让它工作吗?
def listOfgrades(GRADESdata):
names = GRADESdata[:,1].tolist()
names = names.sort(names)
assignments = GRADESdata[:,2::]
final_grades = computeFinalGrades(GRADESdata)
final_grades = np.array(final_grades.reshape(len(final_grades),1))
List_of_grades = np.hstack((GRADESdata, final_grades))
NOofColumns = np.size(GRADESdata,axis = 1)
display = np.zeros(NOofColumns)
for i in names:
display = np.vstack((display,GRADESdata[GRADESdata[:,1] == i]))
grades = display[1::,2:-1]
gradesfinal = display[1::,-1]
#Column titles
c = {"Student ID": GRADESdata[1::,0], "Name": GRADESdata[1::,1]}
for i in range(GRADESdata.shape[1]):
c["Assign.{}".format(i+1)] = GRADESdata[:,i]
c["Final grade"] = final_grades
d = pd.DataFrame(c)
print(d.to_string())
display = np.array([student_list, names, assignments, final_grades])
return display预期输出如下所示(数据如下所示):
ID number Name Assignment 1 Assignment 2 Final Grade编辑:数据输入为.csv文件,包含以下数据:身份证号、姓名、分配1、分配2等。
发布于 2019-06-24 22:25:10
中的逗号
names = GRADESdata[:,1].tolist()不是有效字符。:和之间的部分必须是整数
发布于 2019-06-24 22:08:18
从.tolist()的角度来看,我假设您应该使用的数据结构是numpy.ndarray。
我设法用下面的代码复制了这个错误:
print("12354"[:,1].tolist())
如果您使用文件名作为输入,这是有意义的--这就是您的错误。为了解决这个问题,您需要在函数的开头或外部实现一个字符串解析器。
在代码开头添加以下内容:
file=open(GRADESdata,"r")
data=file.read()
file.close()
list1=data.split("\n")#Replace \n with appropriate line separator
list2=[e.split(",") for e in list1]
GRADESdata=numpy.array(list2)https://stackoverflow.com/questions/56737696
复制相似问题