Python 从数据帧上的坐标列反向地理编码

Python 从数据帧上的坐标列反向地理编码,python,pandas,geocoding,reverse-geocoding,geopy,Python,Pandas,Geocoding,Reverse Geocoding,Geopy,我有一个Pandas数据框,其中包含描述不同位置的几列属性。让我们调用dataframe df,dataframe有一个列位置元组,其中包含df中每一行的(纬度、经度)坐标值元组。我现在想在df中创建一个新的列,其中包含df中每个位置的城市名称,我想知道是否有人可以建议一种方便的方法来实现这一点 我能够使用geopy包获得df中给定行的城市名称。从geopy.geocoders导入namitm,并创建一个geologitor对象作为geologitor=namitm(user_agent=“my

我有一个Pandas数据框,其中包含描述不同位置的几列属性。让我们调用dataframe df,dataframe有一个列位置元组,其中包含df中每一行的(纬度、经度)坐标值元组。我现在想在df中创建一个新的列,其中包含df中每个位置的城市名称,我想知道是否有人可以建议一种方便的方法来实现这一点

我能够使用geopy包获得df中给定行的城市名称。从
geopy.geocoders
导入
namitm
,并创建一个geologitor对象作为
geologitor=namitm(user_agent=“myapp”)
,我可以通过键入第0行坐标的城市名称

geolocator.reverse(df.location_tuple[0]).raw['address']['city']
但是我没有办法实现这一点,无法为数据框中的所有行获取一个包含城市名称的新列。我希望能在这方面得到一些帮助


非常感谢

A
lambda
表达式是描述从
location\u tuple
获取
city
的整个过程所需要的

lambda el: geolocator.reverse(el).raw["address"]["city"]
将其插入
列表(map())
df.apply()
将起作用

df["city"] = list(map(lambda el: geolocator.reverse(el).raw["address"]["city"], df["location_tuple"]))
df["city"] = df["location_tuple"].apply(lambda el: geolocator.reverse(el).raw["address"]["city"])
代码:(请下次提供样本数据,以方便助手使用)

输出

df
Out[16]: 
       location_tuple       city
0  (25.033, 121.5654)        臺北市
1   (52.3676, 4.9041)  Amsterdam

还考虑在<代码> GooLoCalcor .ReReSESE()中添加<代码>语言“EN”/代码>,因此城市名称变为英文。

df
Out[16]: 
       location_tuple       city
0  (25.033, 121.5654)        臺北市
1   (52.3676, 4.9041)  Amsterdam