我在txt文件中有以下数据:
BE 1060 Bruxelles Saint-Gilles Bruxelles-Capitale BRU Bruxelles BRU 50.8167 4.3333 4
BE 1060 Bruxelles Bruxelles-Capitale BRU Bruxelles BRU 50.8466 4.3528 4
BE 1070 Bruxelles Anderlecht Bruxelles-Capitale BRU Bruxelles BRU 50.8333 4.3 4
BE 1070 Bruxelles Bruxelles-Capitale BRU Bruxelles BRU 50.8466 4.3528 4
BE 1080 Bruxelles Molenbeek-Saint-Jean Bruxelles-Capitale BRU Bruxelles BRU 50.85 4.3167 4
BE 1080 Bruxelles Bruxelles-Capitale BRU Bruxelles BRU 50.8466 4.3528 4
BE 1081 Bruxelles Koekelberg Bruxelles-Capitale BRU Bruxelles BRU 50.8667 4.3333 4
BE 1082 Bruxelles Berchem-Sainte-Agathe Bruxelles-Capitale BRU Bruxelles BRU 50.8667 4.2833 4
BE 1083 Bruxelles Ganshoren Bruxelles-Capitale BRU Bruxelles BRU 50.8667 4.3 4
BE 1090 Bruxelles Bruxelles-Capitale BRU Bruxelles BRU 50.8466 4.3528 4
BE 1090 Bruxelles Jette Bruxelles-Capitale BRU Bruxelles BRU 50.8667 4.3333 4
BE 1110 OTAN - NATO Bruxelles-Capitale BRU Bruxelles BRU 50.8765 4.422 1
BE 1120 Bruxelles Bruxelles-Capitale BRU Bruxelles BRU 50.8466 4.3528 4
BE 1120 Bruxelles Neder-over-Heembeek Bruxelles-Capitale BRU Bruxelles BRU 50.8466 4.3528 3
BE 1130 Bruxelles Bruxelles-Capitale BRU Bruxelles BRU 50.8466 4.3528 4
BE 1140 Bruxelles Evere Bruxelles-Capitale BRU Bruxelles BRU 50.8667 4.4 4
BE 1140 Bruxelles Bruxelles-Capitale BRU Bruxelles BRU 50.8466 4.3528 4
BE 1150 Bruxelles Woluwe-Saint-Pierre Bruxelles-Capitale BRU Bruxelles BRU 50.8333 4.4167 4
BE 1150 Bruxelles Bruxelles-Capitale BRU Bruxelles BRU 50.8466 4.3528 4
BE 1160 Bruxelles Auderghem Bruxelles-Capitale BRU Bruxelles BRU 50.8167 4.4333 4
BE 1160 Bruxelles Bruxelles-Capitale BRU Bruxelles BRU 50.8466 4.3528 4
BE 1170 Bruxelles Watermael-Boitsfort Bruxelles-Capitale BRU Bruxelles BRU 50.8 4.4 4
BE 1170 Bruxelles Bruxelles-Capitale BRU Bruxelles BRU 50.8466 4.3528 4
BE 1180 Bruxelles Bruxelles-Capitale BRU Bruxelles BRU 50.8466 4.3528 4
BE 1180 Bruxelles Uccle Bruxelles-Capitale BRU Bruxelles BRU 50.8 4.3167 4
我想计算每个2位邮政编码(10和11)的质心。如何获得所有10xx和所有11xx邮政编码的坐标作为质心公式的输入值?
结果应该是这样的: 是10 50.856 4.423 BE 11 50.8478 4.312 是12等。
答案 0 :(得分:0)
这是一个肮脏的脚本。您可能需要稍微调整一下。
import csv
codes = {}
with open("data.csv", "r") as file:
reader = csv.reader(file, delimiter = "\t")
for line in reader:
short_code = line[1][:2]
lat = float(line[9])
lon = float(line[10])
if not short_code in codes:
codes[short_code] = []
codes[short_code].append((lat, lon))
for short_code in codes:
lat_sum = 0
lon_sum = 0
for point in codes[short_code]:
lat_sum += point[0]
lon_sum += point[1]
lat_avg = lat_sum / len(codes[short_code])
lon_avg = lon_sum / len(codes[short_code])
print("BE %s %.4f %.4f" % (short_code, lat_avg, lon_avg))