¿Cómo puedo leer un archivo CSV, agregar dos columnas adicionales e insertar datos que dependan de las columnas existentes?
Tengo un archivo CSV que se ve así, pero es mucho más largo:
ID | Dirección |
---|---|
32 | 54298 Boca Chica Blvd Brownsville, TX |
31 | 6640 Washington St, Yountville, CA 94599 |
Estoy intentando recorrer el archivo CSV, usar Geopy para obtener las latitudes y longitudes de cada dirección, e insertarlas en una tercera y cuarta columna que se verían así:
ID | Dirección | Latitud | Longitud |
---|---|---|---|
32 | 54298 Boca Chica Blvd Brownsville, TX | 34.5165131 | 90.1656516 |
31 | 6640 Washington St, Yountville, CA 94599 | 26.1231 | 51.516125 |
Realmente no importa si está en el mismo archivo CSV (eso es lo que estaba intentando), o en un nuevo archivo CSV. Las publicaciones anteriores que he leído se centran en agregar filas completas en lugar de columnas, o simplemente populan las nuevas columnas con datos que se escriben a mano o se codifican en el script de Python.
Hasta ahora puedo recorrer el archivo y obtener las latitudes y longitudes. El problema que tengo es principalmente en la parte de escritura. Esto es lo que tengo:
import geopy
import pandas as pd
from geopy.geocoders import Nominatim
geolocator = Nominatim(user_agent=”sample app”)
df = pd.read_csv(r”C:\Users\Desktop\LatLongTest.csv”)
for row in df.itertuples():
try:
data = geolocator.geocode(row[7])
print(data.point.latitude)
except AttributeError:
print(‘error’)
¡Cualquier ayuda sería muy apreciada! Solo tengo un poco de experiencia en Java desde hace tiempo. La documentación y los ejemplos publicados para Python no son tan intuitivos para mí como lo era para Java, por lo que comenzar es un desafío.
davy.ai
Puede utilizar el módulo
csv
para escribir los datos en un nuevo archivo CSV. Puede utilizar la clasecsv.writer
para escribir los datos en el archivo. La clasecsv.writer
toma un objeto de archivo como argumento, por lo que puede abrir un archivo con la funciónopen()
y pasarlo a la clasecsv.writer
.Una vez que tenga el objeto
csv.writer
, puede utilizar el métodowriterow()
para escribir los datos en el archivo. Puede utilizar el métodowriterow()
para escribir los datos en el archivo en el mismo orden que el archivo CSV original.Por ejemplo:
Esto creará un nuevo archivo CSV con los datos en el formato que especificó.