python - 按列对csv文件进行排序,同时保留标题

时间:2017-11-07 01:23:57

标签: python python-3.x list sorting

我将csv导入到python中,现在我有一个看起来像这样的嵌套列表。

data = [['header1,'header2','header3'...], [1,2,3...], [a,b,c...] ]

所以第一行是标题行,其余的是实际数据。我想使用以下代码对数据进行排序:

data = sorted(data, key = lambda x: x[1]) #-> sorts data by the 2nd header

但是当我这样做时,代码也会对标题行进行排序,而我的标题位于数据中某处的中间位置。如何在第一行保留标题,同时对其余标题进行排序? 我已经看到一些使用operator.itemgetter()执行此操作的代码,但我不想这样做

2 个答案:

答案 0 :(得分:1)

您可以对数组的切片进行排序,如:

data = [['header1','header2','header3'], 
        [1, 2, 3], 
        [2, 3, 4], 
        [5, 6, 7], 
        [3, 4, 5],
        [7, 8, 9], 
        [6, 3, 4] 
]

data[1:] = sorted(data[1:], key = lambda x: x[0])

这将从第一个元素开始,对其进行排序,并将其重新分配到数组的同一个切片。

现在的数据是:

 [['header1', 'header2', 'header3'], 
 [1, 2, 3], 
 [2, 3, 4], 
 [3, 4, 5], 
 [5, 6, 7], 
 [6, 3, 4], 
 [7, 8, 9]
 ]

答案 1 :(得分:0)

排序(数据[1:],键= lambda x:x [1])