首页 > 解决方案 > 尽管使用 pd 和 geopy 迭代槽行,但在 pd 数据框中打印相同的坐标

问题描述

我正在编写一个程序来使用 geopy nominatim 从医院名称中检索长和纬度坐标。尽管并不总是列出城市和国家,但 Nominatim 在查找坐标方面非常强大。该脚本工作正常,但打印的坐标与每一行不对应,相同的坐标打印在数据框中。

首先,我使用 pd 读取包含医院名称的 excel 文件并将其转换为 df。我还定义了地理定位器。

    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)

然后,我使用 next() 将每一行定义为 df 中的下一次迭代,并使用 for 循环获取每一行的坐标。如果医院名称是 TBD,我还将坐标设置为等于 NA。该代码没有错误,但它在每一行中打印相同的坐标。

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()

截屏

我正在重复每一行,所以不知道为什么我会为每一行得到相同的坐标,如屏幕截图所示。非常感谢任何帮助或提示。

谢谢!

标签: pythonpandasdataframefor-loopgeopy

解决方案


推荐阅读