Объект Folium & Series не имеет атрибута get_name

Я новичок в фолиуме и столкнулся с AttributeError при попытке добавить серию маркеров на карту folium, перебирая панды df, содержащие пары координат и имя местоположения для каждой пары, например.

   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'

что, я думаю, вызвано файлами element.py и generic.py в folium:

/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'

Ценим любую помощь в том, как обойти это!


person msoderstrom    schedule 07.06.2016    source источник
comment
Если вы добавите многострочную трассировку обратно к вопросу, вы можете напрямую открыть файлы и строки, где - в стеке - произошло исключение. Я предполагаю, что какой-то магический фоновый метод/функция ожидает, что его клиентские объекты предоставят метод get_name для хорошего извлечения текста, который затем может быть напечатан в виде строки на какой-либо карте или во всплывающей подсказке.   -  person Dilettant    schedule 07.06.2016
comment
Почему for i in df: и в следующей строке вы пытаетесь добавить полные столбцы в Marker. Возможно, вы хотите что-то вроде for row in df: folium.Marker(row['location'], popup=row['location_name'], ...)?   -  person    schedule 07.06.2016
comment
Вы правы, напечатайте с моего конца - извините за путаницу! Я отредактировал код, но теперь получаю TypeError: string indices must be integers   -  person msoderstrom    schedule 07.06.2016


Ответы (1)


Лучше поздно, чем никогда! Прибыв сюда после того же кода ошибки, я забыл вызвать folium.Popup(подробности) Я полагаю, что это тот ребенок, который нужен.

Ошибка, вызванная этой строкой

popup=i.location_name

что должно быть

popup = folium.Popup(i.location_name)
person scatter    schedule 08.11.2018