【问题标题】:Create a map via folium with multiple points通过 folium 创建具有多个点的地图
【发布时间】:2019-03-16 23:20:02
【问题描述】:

问题

我几乎是一个字一个字地写了这段代码,并得到了这个错误。 如果相关,数据表大约有 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

【问题讨论】:

    标签: python folium


    【解决方案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 是作为位置关键字传递的。

    在列表中分组 lat/long 可以修复您的代码:

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

    【讨论】:

    • 您好,很抱歉回复速度太慢,但是这不起作用?新错误虽然显示为编辑
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-02
    • 2022-01-02
    • 2012-08-28
    • 2020-07-31
    • 1970-01-01
    • 1970-01-01
    • 2019-11-24
    相关资源
    最近更新 更多