Я пишу программу для получения длинных и широтных координат из названий больниц с помощью geopy nominatim. Номинатим способен находить координаты, хотя город и страна не всегда указаны в списке. Сценарий работает нормально, но напечатанные координаты не соответствуют каждой строке, те же координаты печатаются в кадре данных.
Сначала я прочитал файл excel, содержащий названия больниц, используя pd, и преобразовал его в df. Я также определил geolocator.
from geopy.geocoders import Nominatim
import pandas as pd
geolocator = Nominatim(user_agent='geoapp')
data = "Hospital.xlsx"
data = pd.read_excel(data)
data.dropna(inplace = False)
df = pd.DataFrame(data)
Затем я определил каждую строку как следующую итерацию в df, используя next (), и я использовал цикл for, чтобы получить координаты для каждой строки. Я также установил координаты равными NA, если название больницы TBD. Код работает без ошибок, но он печатает одинаковые координаты в каждой строке.
row = next(df.iterrows())[1]
for row in df:
location = geolocator.geocode(row, addressdetails=True)
df['lon'] = location.raw['lon']
df['lat'] = location.raw['lat']
if row == 'TBD':
df['lon'] = 'NA'
df['lat'] = 'NA'
else:
df.fillna('N/A', inplace=True)
writer = pd.ExcelWriter("Coordinates.xlsx")
df.to_excel(writer, index=False, sheet_name='Summary')
workbook = writer.book
worksheet = writer.sheets['Summary']
worksheet.set_zoom(90)
worksheet.set_column('A:Z', 20)
writer.save()
Снимок экрана
Я повторяюсь по каждой строке, поэтому не уверен, почемуЯ получаю те же координаты для каждой строки, как показано на скриншоте. Любая помощь или советы приветствуются.
Спасибо!