【问题标题】:Folium & Series object has not attribute get_nameFolium & Series 对象没有属性 get_name
【发布时间】:2016-06-07 10:50:44
【问题描述】:

我对 folium 还是很陌生,在尝试通过循环遍历包含坐标对和每对位置名称的 pandas dffolium 地图添加一系列标记时遇到了 AttributeError,例如

   location_name  location  
   'foo'          [40.736932, -73.997043]   
   'bar'          [40.738859, -73.995058]   
   'xyz'          [40.744085, -74.000394]

使用以下代码:

center_map = [40.738859, -73.995058]

map_1 = folium.Map(location=center_map, tiles=None, zoom_start=12)

for i in df:
        folium.Marker(i.location,
                      popup=i.location_name,
                      icon=folium.Icon(color='purple')
                      ).add_to(map_1)

但是,我收到以下错误:

AttributeError: 'Series' object has no attribute 'get_name'

我认为是由folium 中的element.pygeneric.py 文件引起的:

/Users/martin/anaconda/envs/py3k/lib/python3.5/site-packages/folium/element.py in add_children(self, child, name, index)
     85     def add_children(self, child, name=None, index=None):
     86         """Add a child."""
---> 87         return self.add_child(child, name=name, index=index)
     88 
     89     def add_child(self, child, name=None, index=None):

/Users/martin/anaconda/envs/py3k/lib/python3.5/site-packages/folium/element.py in add_child(self, child, name, index)
     90         """Add a child."""
     91         if name is None:
---> 92             name = child.get_name()
     93         if index is None:
     94             self._children[name] = child

/Users/martin/anaconda/envs/py3k/lib/python3.5/site-packages/pandas/core/generic.py in __getattr__(self, name)
   2667             if name in self._info_axis:
   2668                 return self[name]
-> 2669             return object.__getattribute__(self, name)
   2670 
   2671     def __setattr__(self, name, value):

AttributeError: 'Series' object has no attribute 'get_name'

感谢有关如何解决此问题的任何帮助!

【问题讨论】:

  • 如果您将多行跟踪也添加到问题中,则可能会直接将文件和行暴露在哪里 - 堆栈明智 - 发生异常。我的猜测是,一些神奇的背景方法/函数期望它的客户端对象提供一个 get_name 方法来很好地检索文本,然后它能够​​在某些地图或工具提示弹出窗口中打印为字符串。
  • 为什么for i in df: 并且在下一行中您尝试将完整列添加到Marker。也许您想要for row in df: folium.Marker(row['location'], popup=row['location_name'], ...) 之类的东西?
  • 你说得对,从我这里输入-o - 很抱歉造成混乱!我编辑了代码,但现在得到TypeError: string indices must be integers

标签: python folium


【解决方案1】:

迟到总比不到好!在相同的错误代码之后到达这里,我忘记调用 folium.Popup(details) 我想这就是需要的孩子。

此行引起的错误

popup=i.location_name

应该是

popup = folium.Popup(i.location_name)

【讨论】:

    猜你喜欢
    • 2018-02-05
    • 2017-10-18
    • 2015-07-25
    • 2017-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-04
    • 1970-01-01
    相关资源
    最近更新 更多