【问题标题】:Country name from geolocation in a new column新列中来自地理位置的国家/地区名称
【发布时间】:2017-02-28 17:00:46
【问题描述】:

我是 Python 新手并使用 Pandas 数据框。

我正在尝试通过反向地理编码在由纬度和经度记录组成的国家名称数据框中创建一个新列,但我遇到了一些麻烦。

这很好用,并返回一行的国家名称:

res = Geocoder.reverse_geocode(df['latitude'][0], df['longitude'][0])
print(res.country)

但是,当我尝试获取所有列的国家/地区时,它不起作用:

df['country'] = (Geocoder.reverse_geocode(df['latitude'], df['longitude'])).country

"KeyError = 12"

我没有在网上找到任何可以开始工作的解决方案。有什么建议吗?

【问题讨论】:

  • 函数可能看不懂Series,试试apply:df['country'] = df.apply(lambda x: Geocoder.reverse_geocode(x['latitude'], x['longitude']).country, axis=1)

标签: python pandas dataframe geocode


【解决方案1】:

IIUC 很可能reverse_geocode 不理解Series args 尝试apply 依次传递每一行值:

df['country'] = df.apply(lambda x: Geocoder.reverse_geocode(x['latitude'], x['longitude']).country, axis=1)

【讨论】:

  • 似乎不适用于和我一样大的数据框。
  • doesn't work 不是一个完整的解释,发布原始数据,您的代码,以及“似乎不起作用”的实际含义
  • 对不起。这意味着当我采用较小版本的数据框(约 50 行)时,它需要一点时间,但效果很好。在我的实际数据框(数千行)上,它需要永远,然后返回查询超出限制响应。
  • 这是一个库限制,我相信与此代码无关。我认为您的请求数量有限,这是与您原来的问题不同的问题
  • 您使用哪个库进行 reverse_geocoding ?像@EdChum 我认为你受到请求数量的限制,所以也许你可以使用一个支持离线查询的库,比如这个:github.com/thampiman/reverse-geocoder
猜你喜欢
  • 2020-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多