【发布时间】:2021-11-23 07:13:28
【问题描述】:
我有一个 500,000 个纬度和经度坐标列表,如下所示:
Latitude Longitude
42.022506 -88.168156
41.877445 -87.723846
29.986801 -90.166314
我希望使用 python 来获取新列中每个坐标的城市、州和国家,如下所示:
Latitude Longitude City State Country
42.022506 -88.168156 Streamwood IL United States
41.877445 -87.723846 Chicago IL United States
29.986801 -90.166314 Metairie LA United States
有了这么大的数据集,如何在 python 中实现呢?我听说过 Google 的 API、Nominatim 的 API 和 Geopy 包。
如何将所有行都运行到此代码中?现在我必须在最后一行手动输入纬度和经度。
import csv
import pandas as pd
import numpy as np
import math
from geopy.geocoders import Nominatim
input_file = "Lat-Log.csv" # file contains ID, Latitude, Longitude
output_file = "output.csv"
df = pd.read_csv(input_file)
geolocator = Nominatim(user_agent="geoapiExercises")
def city_state_country(coord):
location = geolocator.reverse(coord, exactly_one=True)
address = location.raw['address']
city = address.get('city', '')
state = address.get('state', '')
country = address.get('country', '')
return city, state, country
print(city_state_country("47.470706, -99.704723"))
输出给了我('Bowdon'、'North Dakota'、'USA')。我正在寻找用我的列(纬度和经度)替换坐标以遍历我的列表。如何将我的列输入到代码中以运行整个文档?
【问题讨论】:
-
有什么东西阻止你自己做这方面的研究吗?通常,只是询问如何做某事而没有显示代码或尝试的 StackOverflow 问题往往会被否决和关闭。我认为需要展示您的更多研究/努力。否则这基本上是一个“我想要一些代码,给我”的帖子。请参阅:How much research effort is expected of Stack Overflow users? 编辑:好的,看起来您确实提供了一些代码,但请说明您在列中遇到的问题。
-
看起来您的代码完全符合您的要求。您希望输出是什么?与其谈论“替换列”或其他与代码相关的细节,谈论输出通常更具建设性。
-
如果您不想预先对坐标进行排序以消除重复,至少缓存检索到的值,这样您就不会使用相同的坐标多次调用您的 api。
-
输出为我提供了该确切位置的城市、州和国家/地区。我必须手动将纬度和经度输入
print(city_state_country("47.470706, -99.704723"))。我希望用我的纬度和经度列替换坐标,并为每个坐标提供城市、州和国家,并将它们放入新列中。 -
示例代码是你自己写的吗?
标签: python pandas latitude-longitude