如何从csv文件中按最高值到最低值对表中的一列数值进行排序



我有一个包含两列的信息表;'Name"one_answers"Score/10",存储在csv文件中。cvs文件名为"第一年列表"。目前,我可以根据"名称"列按字母顺序对表格进行排序,这样每个名称都会按字母顺序输出相应的分数。现在,我希望能够根据"得分/10"列对表格进行排序,首先是最高得分,最后是最低得分。有人能告诉我怎么做吗?我必须将"得分/10"列转换为列表吗?我的代码如下:

print ("Do you wish to view previous class' results?")
option = input()
if option == ("yes"):
    print ("Which class' results' do you wish to view; 1,2 or 3?")
    viewyear = int(input())
    if viewyear == 1:
        print ("How do you want to view your results; alpha - alphabetically by name, av - mean score, desc - from highest to lowest?.")
        viewoption = input()
        if viewoption == ('alpha'):
                with open("Year 1 List.csv", "r") as f:
                    for line in sorted(f):
                        print(line)

提前感谢

print next(f) # skip the header we dont want that
for line in sorted(f,key=lambda line:float(line.split(",")[1])):

粗熊猫会让变得更容易

df = pd.Dataframe.from_csv("my.csv")
print df.sort("Score /10")

最后一点帮助是在解释器中(我们使用s=cStringIO.StringIO("""...""")而不是f=open("somefile"),因为这可以让我们在示例中"包括"csv数据)

>>> s = cStringIO.StringIO("""StudentName, Score/10
... bob,12
... sue,6
... billy,18
... sam,9
... """)
>>> print next(s) #the header
StudentName, Score/10
>>> for line in sorted(s,key=lambda line:float(line.split(",")[1])): #the rest
...     print line
...
sue,6
sam,9
bob,12
billy,18

您可以使用Python中的numpy。您通过以下方式读取csv文件:

import numpy
reading = numpy.genfromtxt("filename", delimiter = " ")
sort = numpy.max("column")
print sort

最新更新