python:在csv文件中排序坐标

时间:2014-01-17 19:04:01

标签: python sorting csv coordinates

我在csv文件中设置了三维坐标​​,如: [两个第一列分别是十进制度的纬度和经度,第三列是高程]

49.000000,14.000000,47.206
55.000000,14.000000,34.727
49.000000,24.366667,31.979
55.000000,24.366667,24.744

我想按以下顺序对坐标进行排序:从西北角开始然后向东南走,如:

55.000000,14.000000,34.727
55.000000,24.366667,24.744
49.000000,14.000000,47.206
49.000000,24.366667,31.979

必须保持高度,粘贴到给定的2D坐标。

我试过简单的下降第1列和上升的第2列,但没有得到所需的顺序。

import csv

coordinates = [];

file_in = csv.reader(open('NewFile.csv', 'rb'), delimiter=',', quotechar='|');
file_out = '11dataout.txt'
fout=open(file_out,"w")

for row in file_in:
    coordinates.append(row)
coordinates.sort(key=lambda x: x[1], reverse=True)                              
coordinates.sort(key=lambda x: x[2])
fout.write(str(coordinates))
fout.write('\n')

提前致谢。

2 个答案:

答案 0 :(得分:2)

您也可以一次性进行排序:

coordinates.sort(key = lambda x: (-x[0], x[1]))

答案 1 :(得分:1)

你的问题是你假设列表是1索引的,当它们不是:

[55.000000, 14.000000, 34.727]
#0          1          2

此外,您按错误的顺序排序,您需要按经度排序然后纬度:

coordinates.sort(key=lambda x: x[1])                              
coordinates.sort(key=lambda x: x[0], reverse=True)