python - 尽管使用 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()
我正在重复每一行,所以不知道为什么我会为每一行得到相同的坐标,如屏幕截图所示。非常感谢任何帮助或提示。
谢谢!
解决方案
推荐阅读
- c# - SerialPort.Write() 方法挂起
- ios - Swift UIView 约束恒定高度更改时间获取 LayoutConstraints 警告
- javascript - 如果在gridview的其他列中按升序进行排序,如何使序列号自动生成稳定和固定
- email - 如何将我的 Mac Mail 连接到通过 DigitalOcean 处理他的 DNS 的域?
- reactjs - 'Collapse' 未定义 react/jsx-no-undef
- python - 如何通过 Python Scrapy 抓取 drupal 网站?
- javascript - 从多个表单中选择特定元素
- php - 在 laravel 中使用强制 url 缓存 web 路由
- python - 在 matplotlib 中以交互方式更改动画参数
- sql - SQL Server 如何总是回滚整个事务