使用 pandas 数据框中的城市名称将多个标记添加到 folium 地图

Aze*_*zel 1 python dataframe python-3.x pandas folium

我尝试使用 folium 地图可视化数据,并且必须将所有芬兰城市名称绘制到地图上。我尝试使用 pandas dataframe,因为我的所有数据都是 csv 格式。这是我迄今为止尝试过的代码。

\n
import folium\nfrom folium import plugins\nimport ipywidgets\nimport geocoder\nimport geopy\nimport numpy as np\nimport pandas as pd\nfrom vega_datasets import data as vds\n\nm = folium.Map(location=[65,26], zoom_start=5)\n\n# map\nmap_layer_control = folium.Map(location=[65, 26], zoom_start=5)\n\n# add tiles to map\nfolium.raster_layers.TileLayer(\'Open Street Map\').add_to(map_layer_control)\nfolium.raster_layers.TileLayer(\'Stamen Terrain\').add_to(map_layer_control)\nfolium.raster_layers.TileLayer(\'Stamen Toner\').add_to(map_layer_control)\nfolium.raster_layers.TileLayer(\'Stamen Watercolor\').add_to(map_layer_control)\nfolium.raster_layers.TileLayer(\'CartoDB Positron\').add_to(map_layer_control)\nfolium.raster_layers.TileLayer(\'CartoDB Dark_Matter\').add_to(map_layer_control)\n\n# add layer control to show different maps\nfolium.LayerControl().add_to(map_layer_control)\n\n# display map\nmap_layer_control\nlist = {\'REGION\': [\'Kajaani\',\'Lappeenranta\',\'Pudasj\xc3\xa4rvi\'],\n       \'CUSTOMERS\':[\'7\',\'4\',\'64\']}\n\nlist = pd.DataFrame(list)\n\n# geocode address and place marker on map\n\n# map\nmap_zoo = folium.Map(location=[65,26], zoom_start=4)\n\n# get location information for address\nfor i in range(0,len(list)):\n    address = geocoder.osm(list[\'REGION\'])\n\n# address latitude and longitude\naddress_latlng = [address.lat, address.lng]\n\n# add marker to map\nfolium.Marker(address_latlng, popup=\'INFO\', tooltip=\'Click for more information!\').add_to(map_zoo)\n\n# display map\nmap_zoo\n
Run Code Online (Sandbox Code Playgroud)\n

然而,此代码仅向最后一个城市“Pudasj\xc3\xa4rvi\”添加标记

\n

sen*_*nce 5

您可以使用geopy获取坐标,然后使用循环将标记添加到地图:

\n
import folium\nfrom geopy.geocoders import Nominatim\nimport pandas as pd\n\ngeolocator = Nominatim(user_agent="example")\n\nl = {\'REGION\': [\'Kajaani\',\'Lappeenranta\',\'Pudasj\xc3\xa4rvi\'],\n     \'CUSTOMERS\':[\'7\',\'4\',\'64\']}\n\nl[\'COORDS\'] = []\nfor k in l[\'REGION\']:\n    loc = geolocator.geocode(k).raw\n    l[\'COORDS\'].append((loc[\'lat\'], loc[\'lon\']))\n\ndf = pd.DataFrame(l)\n\nmap_zoo = folium.Map(location=[65,26], zoom_start=4)\n\nfor i,r in df.iterrows():\n    folium.Marker(location=r[\'COORDS\'],\n                  popup = r[\'REGION\'],\n                  tooltip=\'Click for more information!\').add_to(map_zoo)\nmap_zoo\n
Run Code Online (Sandbox Code Playgroud)\n

你得到:

\n

在此输入图像描述

\n