我有一个包含50万个经纬度坐标的列表,格式如下:
Latitude Longitude
42.022506 -88.168156
41.877445 -87.723846
29.986801 -90.166314
我想使用Python获取每个坐标的城市、州和国家,并在新列中显示,如下所示:
Latitude Longitude City State Country
42.022506 -88.168156 Streamwood IL United States
41.877445 -87.723846 Chicago IL United States
29.986801 -90.166314 Metairie LA United States
有了这么大的数据集,怎样使用Python可以实现这个功能呢?我听说过Google的API、Nominatim的API和Geopy包。
如何让代码运行遍历所有行?目前我必须手动输入纬度和经度到最后一行中。
import csv
import pandas as pd
import numpy as np
import math
from geopy.geocoders import Nominatim
input_file = "Lat-Log.csv" # file contains ID, Latitude, Longitude
output_file = "output.csv"
df = pd.read_csv(input_file)
geolocator = Nominatim(user_agent="geoapiExercises")
def city_state_country(coord):
location = geolocator.reverse(coord, exactly_one=True)
address = location.raw['address']
city = address.get('city', '')
state = address.get('state', '')
country = address.get('country', '')
return city, state, country
print(city_state_country("47.470706, -99.704723"))
输出结果是 ('Bowdon', 'North Dakota', 'USA'),我想用我的列(纬度和经度)替换坐标并运行整个文档。如何将我的列输入代码以通过整个文档?
print(city_state_country("47.470706, -99.704723"))
中。我想用我的纬度和经度列替换坐标,并为每个坐标提供城市,州和国家,并将它们放入新列中。 - Nick