Forum
>>
Programmazione Python
>>
Files e Directory
>>
Folium - TypeError: cannot convert the series to <class 'float'>
Pagina: 1
Esegui il login per scrivere una risposta.
Pagina: 1
Scritto da alex1986 |
2017-11-03 16:42:09 - Folium - TypeError: cannot convert the series to <class 'float'>
|
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 --- |
|
Scritto da alex1986 |
2017-11-04 12:32:45 - Re: Folium - TypeError: cannot convert the series to <class 'float'>
|
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.