通过具有多个点的叶片创建地图

时间:2019-03-16 23:20:03

标签: python folium

问题

我几乎逐字地编写了此代码,并得到此错误。 如果相关的话,数据表大约有1000行。

我该如何解决这个问题?

代码

import folium
import numpy as np
import pandas as pd

df = pd.read_csv('Book1.csv')
lat = df.Latitude
lon = df.Longitude
name = df.Docking

m = folium.Map(location=[20, 0], tiles="Stamen Terrain", zoom_start=9)

locations = df[['Latitude', 'Longitude']]
locationlist = locations.values.tolist()

for i in range(0, len(df)):
    folium.Marker(lon[i], lat[i], popup=df.Docking[i]).add_to(m)

错误:

----> 2     folium.Marker(lon[i], lat[i], popup=df.Docking[i]).add_to(m)

TypeError: __init__() got multiple values for argument 'popup'

编辑: 在建议对Lat和Long属性进行分组的答复之后,此错误显示:

---> 16     folium.Marker([lon[i], lat[i]], popup=df.Docking[i]).add_to(m)

TypeError: must be real number, not str

1 个答案:

答案 0 :(得分:1)

可能发生的情况是,经度/纬度应该是包含2个元素的元组/列表,然后跟随popup,但是您要提供2个元素然后 popup再次

documentation中的示例:

folium.Marker([45.3288, -121.6625], popup='<i>Mt. Hood Meadows</i>', 

独立示例:

def f(a,b,c=None):
    pass

f(12,34,b=12)

给予:

TypeError: f() got multiple values for argument 'b'

因为b作为位置关键字传递。

在列表中将经纬度分组可修复您的代码:

folium.Marker([lon[i], lat[i]], popup=df.Docking[i]).add_to(m)