Forum >> Programmazione Python >> Files e Directory >> Folium - TypeError: cannot convert the series to <class 'float'>

Pagina: 1

Ciao a tutti :)

Sto approcciando con Folium per la creazione di mappe interattive (e con l'aiuto di Anaconda), e dopo aver caricato correttamente librerie e file csv, Anaconda mi segnala un TypeError: cannot convert the series to <class 'float'>.

proprio in corrispondenza delle ultime due righe, e non disegna sulla mappa i marker rappresentati dalla coppia la,lo (latitude, longitude). A cosa può essere dovuto?

Vi allego codice ed errore. Grazie a chi vorrà aiutarmi :)

import folium
import pandas
import os
import json

print (folium.__version__)


fermate = pandas.read_csv('Strutture-Ricettive2017 1.csv')

lat = (list(fermate["Latitudine"]))
lon = (list(fermate["Longitudine"]))


latitude = []
for la in lat:
    la = pandas.to_numeric(fermate['Latitudine'])
    latitude.append(la)

  
longitude = []
for lo in lon:
    lo = pandas.to_numeric(fermate['Longitudine'])
    longitude.append(lo)


m = folium.Map([43, -100], tiles='cartodbpositron', zoom_start=4)


for la, lo in zip(latitude,longitude):
    m.add_child(folium.Marker(location=[la, lo],icon=folium.Icon(icon_color = 'grey')))
TypeError Traceback (most recent call last)
<ipython-input-8-5cc303136819> in <module> ;()
1 for la, lo in zip(latitude,longitude):
----> 2 m.add_child(folium.Marker(location=[la, lo],icon=folium.Icon(icon_color = 'grey')))

~\Anaconda3\lib\site-packages\folium\map.py in __init__(self, location, popup, icon)
645 # Must be _validate_coordinates b/c some markers are defined with
646 # multiple coordinates values, like Polygons.
--> 647 self.location = _validate_coordinates(location)
648 if icon is not None:
649 self.add_child(icon)

~\Anaconda3\lib\site-packages\folium\utilities.py in _validate_coordinates(coordinates)
44 def _validate_coordinates(coordinates):
45 """Validates multiple coordinates for the various markers in folium."""
---> 46 if _isnan(coordinates):
47 raise ValueError('Location values cannot contain NaNs, '
48 'got:\n{!r}'.format(coordinates))

~\Anaconda3\lib\site-packages\folium\utilities.py in _isnan(values)
70 def _isnan(values):
71 """Check if there are NaNs values in the iterable."""
---> 72 return any(math.isnan(value) for value in _flatten(values))
73
74

~\Anaconda3\lib\site-packages\folium\utilities.py in <genexpr> ;(.0)
70 def _isnan(values):
71 """Check if there are NaNs values in the iterable."""
---> 72 return any(math.isnan(value) for value in _flatten(values))
73
74

~\Anaconda3\lib\site-packages\pandas\core\series.py in wrapper(self)
95 return converter(self.iloc0)
96 raise TypeError("cannot convert the series to "
---> 97 "{0}".format(str(converter)))
98
99 return wrapper

TypeError: cannot convert the series to <class 'float'>


--- Ultima modifica di alex1986 in data 2017-11-03 16:43:06 ---
Risolto! E' bastato eliminare le nuove list latitude and longitude create apposta. Quell'errore si manifesta perchè Folium non ha come valore della location un float (così ho compreso leggendo da altri forum). Quindi è bastato applicare il metodo di pandas to_numeric. Il codice corretto è questo:






alberghi = pandas.read_csv('alberghi.csv')


alberghi['Latitudine'] = pandas.to_numeric(alberghi['Latitudine'], errors='coerce').fillna(0)
alberghi['Longitudine'] = pandas.to_numeric(alberghi['Longitudine'], errors='coerce').fillna(0)


m = folium.Map([43, -100], tiles='cartodbpositron', zoom_start=4)

counter = 0
for la, lo in zip(fermate['Latitudine'],fermate['Longitudine']):
    try:
        counter = counter + 1
        m.add_child(folium.Marker(location=[la,lo],icon=folium.Icon(icon_color = 'grey')))
        print (counter)
        if (counter == 45):
            break
    except:
        print ("error")




Pagina: 1



Esegui il login per scrivere una risposta.