我需要按列名对CSV表进行排序。我在CSV中得到的数据有很多列,但是列名是静态的。这是我掌握的数据:
X,Blue,Black,Red,Green,Total
Thomas,2,0,0,0,2
Andy,0,1,0,0,1
Luise,0,0,2,1,3
Mark,1,0,0,1,2
Ronda,0,1,0,1,2
漂亮的印花:
X Blue Black Red Green Total
Thomas 2 0 0 0 2
Andy 0 1 0 0 1
Luise 0 0 2 1 3
Mark 1 0 0 1 2
Ronda 0 1 0 1 2
通常我只能按row[5]
排序,但是如果我得到一个没有任何绿色的表,或者一个有额外的黄色列的表,它将不再工作。
因此问题是,如何根据名为Total
的列对这个CSV文件进行排序?
只能使用核心python模块,不能使用panda。:(一)
如果需要使用列名进行排序,最好使用Python^{} 对象读取文件,如下所示:
这将允许您根据
Total
列进行排序,而不管它在哪里。csv.DictReader()
使用第一行作为标题,将每一行作为字典读取。然后,可以将头值用作字典键来访问项,而不是使用具有正常csv.reader()
的位置值。因此,第一个数据行将被读取为:然后,
csv_input
可以直接传递给sorted()
以创建行字典的排序列表。对于总数相同的情况,key
是total
字段,然后也是X
字段。然后按如下方式写入排序的
output.csv
:您可以定义一个函数来根据任何列进行排序。
不过,熊猫是更好的选择。试着习惯一下。
像这样的东西
相关问题 更多 >
编程相关推荐