我已经试了几个小时了,不知道该怎么办。我有一个包含纬度和经度数据的数据框:
year month lat lon SMI
0 2010 1 47.266481 10.149783 0.830187
1 2010 2 47.266481 10.149783 0.754513
2 2010 3 47.266481 10.149783 0.663457
3 2010 4 47.266481 10.149783 0.407255
4 2010 5 47.266481 10.149783 0.972982
5 2010 6 47.266481 10.149783 0.147511
6 2010 7 47.266481 10.149783 0.085912
7 2010 8 47.266481 10.149783 0.936917
8 2010 9 47.266481 10.149783 0.673884
9 2010 10 47.266481 10.149783 0.242676
10 2010 11 47.266481 10.149783 0.797547
11 2010 12 47.266481 10.149783 0.923627
12 2011 1 47.266481 10.149783 0.895137
13 2011 2 47.266481 10.149783 0.471502
14 2011 3 47.266481 10.149783 0.340169
每月我有23199个不同的地理点,我必须将它们与各自的邮政编码(德国)相匹配
基于这个讨论(https://gis.stackexchange.com/questions/352961/convert-lat-lon-to-zip-postal-code-using-python),我提出了以下代码:
import pandas as pd
import geopy
geopy.geocoders.options.default_user_agent = "myMAil"
def get_zipcode(subsmi, geolocator, lat_field, lon_field):
location = geolocator.reverse((subsmi[lat_field], subsmi[lon_field]))
return location.raw['address']['postcode']
geolocator = geopy.Nominatim()
zipcodes = subsmi.apply(get_zipcode, axis=1, geolocator=geolocator, lat_field='lat', lon_field='lon')
只要数据帧保持在10行,代码就可以工作。只要我想将该代码应用于包含10行以上的数据帧,就会出现KeyError:“postcode”。 我知道提名限制了一个人可以逆转的点数。有没有人知道我如何修改代码,以便最终逆转我所有的观点
谢谢你的帮助
如果限制是如您所想的提名,那么选项可能是将您的数据分成10个数据块,并逐个检查它们,直到找到最接近的解决方案
我还发现有一个允许批量操作的速率限制器功能,这可能也是您的解决方案,我将链接文档
速率限制链接:https://geopy.readthedocs.io/en/latest/index.html?highlight=rate%20limiter#module-geopy.extra.rate_limiter
相关问题 更多 >
编程相关推荐