Одинаковые координаты печатаются в кадре данных pd, хотя итерируют строки с использованием pd и geopy. - PullRequest
0 голосов
/ 08 ноября 2019

Я пишу программу для получения длинных и широтных координат из названий больниц с помощью 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()

Снимок экрана

Я повторяюсь по каждой строке, поэтому не уверен, почемуЯ получаю те же координаты для каждой строки, как показано на скриншоте. Любая помощь или советы приветствуются.

Спасибо!

...