【问题标题】:Read CSV, Change 2 Columns using pyproj Transform and save to new CSV读取 CSV,使用 pyproj Transform 更改 2 列并保存到新的 CSV
【发布时间】:2020-11-05 19:54:41
【问题描述】:

我对 Python 很陌生,因此对我缺乏理解深表歉意。

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

ShopName Misc 纬度经度 XXX 3 999999 999999

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

ShopName Misc 纬度经度 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:

【问题讨论】:

    标签: python csv latitude-longitude transformer pyproj


    【解决方案1】:

    这里有一些选项供您选择。

    熊猫+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")
    

    【讨论】:

    • 感谢您的帮助。您的代码包括“...trans.transformer...”我需要将其修改为“...transformer.transform...”以使其工作。我也想知道,一些 CSV 数据是空白的,当我运行脚本时,它会将“inf”添加到空单元格中。有没有办法让它不添加任何东西?
    • 这听起来像是一个单独的问题。我建议针对您当前的进度提出一个新问题。
    • 感谢您的帮助。
    猜你喜欢
    • 2021-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多