首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >显示按字母顺序排序的列表

显示按字母顺序排序的列表
EN

Stack Overflow用户
提问于 2019-06-24 21:30:51
回答 2查看 68关注 0票数 0

我们正在尝试创建一个函数,它接受输入,一些数据包含以下信息: ID号,姓名,以及包含不同作业成绩的多个列,然后按字母顺序(根据名称)对数据进行排序,然后显示添加了列的数据,该列还显示最终成绩(我们使用另一个函数计算)。我们试着写了下面的代码,但是不能让它工作...给出的错误消息是"names = GRADESdata[:,1].tolist() TypeError: string indices must be integers".

有人能帮我们弄清楚如何让它工作吗?

代码语言:javascript
运行
复制
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

预期输出如下所示(数据如下所示):

代码语言:javascript
运行
复制
ID number     Name     Assignment 1     Assignment 2      Final Grade

编辑:数据输入为.csv文件,包含以下数据:身份证号、姓名、分配1、分配2等。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-24 22:25:10

中的逗号

代码语言:javascript
运行
复制
names = GRADESdata[:,1].tolist()

不是有效字符。:和之间的部分必须是整数

票数 0
EN

Stack Overflow用户

发布于 2019-06-24 22:08:18

.tolist()的角度来看,我假设您应该使用的数据结构是numpy.ndarray。

我设法用下面的代码复制了这个错误:

print("12354"[:,1].tolist())

如果您使用文件名作为输入,这是有意义的--这就是您的错误。为了解决这个问题,您需要在函数的开头或外部实现一个字符串解析器。

在代码开头添加以下内容:

代码语言:javascript
运行
复制
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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56737696

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档