Python 从数据帧上的坐标列反向地理编码
我有一个Pandas数据框,其中包含描述不同位置的几列属性。让我们调用dataframe df,dataframe有一个列位置元组,其中包含df中每一行的(纬度、经度)坐标值元组。我现在想在df中创建一个新的列,其中包含df中每个位置的城市名称,我想知道是否有人可以建议一种方便的方法来实现这一点 我能够使用geopy包获得df中给定行的城市名称。从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
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