阅读CSV,使用pyproj Transform更改2列并保存到新的CSV

问题描述

我是Python的新手,因此对我的不了解深表歉意。

我需要读取4列CSV文件的2列(纬度和经度)。 下面的示例。

ShopName其他纬度经度 XXX 3 999999 999999

然后我必须使用我检查过的pyproj转换scrypt更改纬度和经度。然后,我需要将转换后的纬度和经度数据保存到新的csv中,以使列格式与现有csv相同。 下面的示例。

ShopName其他纬度经度 XXX 3 49.12124 -2.32131

我有点迷路,但这就是我要去的地方。预先谢谢你

import csv
from pyproj import Transformer

#2.2 Define function
def transformer = Transformer.from_crs("epsg:12345","epsg:9999")
    result = transformer.transform(old_longitude,old_latitude)
    return new_longitude,new latitude

#2.3 Set destination file to variable
with open('new.csv','w') as csv_new2:

#2.4 Instruct write method to new file    
    fileWriter2 = csv.writer(csv_new2)
    
#2.5 Set existing file to variable
    with open('old.csv','r') as csv_old2:

#2.6 Instruct read method to new file
        fileReader2 = csv.reader(csv_old2)

        for row in fileReader2:

解决方法

以下是您的一些选择。

pandas + pyproj:

大熊猫:

from pyproj import Transformer
import pandas

pdf = pandas.read_csv("old.csv")
transformer = Transformer.from_crs("epsg:12345","epsg:9999",always_xy=True)
xx,yy = trans.transform(pdf["longitude"].values,pdf["latitude"].values)
pdf = pdf.assign(longitude=xx,latitude=yy)
pdf.to_csv("new.csv")