英文:
Beginner's Error in python, How can I fix this 'lat' of type <class 'str'> is not convertible to float
问题
我最近一直在使用Python,正在使用Foursquare和从Wikipedia获取的数据做一项工作。我正在尝试使用以下代码制作地图:
venues_map = folium.Map(location=[latitude, longitude], zoom_start=13) # 生成以Ciutat Vella为中心的地图
# 添加一个红色圆形标记来表示社区的中心
folium.vector_layers.CircleMarker(
['lat', 'lng'],
radius=10,
color='red',
popup='Eixample',
fill=True,
fill_color='red',
fill_opacity=0.6
).add_to(venues_map)
# 将商店添加为蓝色圆形标记
for lat, lng, label in zip(new_df.lat, new_df.lng, new_df.categories):
folium.vector_layers.CircleMarker(
[lat, lng],
radius=5,
color='blue',
popup=label,
fill=True,
fill_color='blue',
fill_opacity=0.6
).add_to(venues_map)
# 显示地图
venues_map
在执行这一行时,我收到以下错误信息:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
/opt/conda/envs/Python36/lib/python3.6/site-packages/folium/utilities.py in validate_location(location)
58 try:
---> 59 float(coord)
60 except (TypeError, ValueError):
ValueError: could not convert string to float: 'lat'
During handling of the above exception, another exception occurred:
ValueError Traceback (most recent call last)
<ipython-input-27-7a61c4e1c46b> in <module>
11 fill=True,
12 fill_color='red',
---> 13 fill_opacity=0.6
14 ).add_to(venues_map)
15
/opt/conda/envs/Python36/lib/python3.6/site-packages/folium/vector_layers.py in __init__(self, location, radius, popup, tooltip, **kwargs)
303 def __init__(self, location, radius=10, popup=None, tooltip=None, **kwargs):
304 super(CircleMarker, self).__init__(location, popup=popup,
--> 305 tooltip=tooltip)
306 self._name = 'CircleMarker'
307 self.options = path_options(line=False, radius=radius, **kwargs)
/opt/conda/envs/Python36/lib/python3.6/site-packages/folium/map.py in __init__(self, location, popup, tooltip, icon, draggable, **kwargs)
275 super(Marker, self).__init__()
276 self._name = 'Marker'
--> 277 self.location = validate_location(location)
278 self.options = parse_options(
279 draggable=draggable or None,
/opt/conda/envs/Python36/lib/python3.6/site-packages/folium/utilities.py in validate_location(location)
61 raise ValueError('Location should consist of two numerical values, '
62 'but {!r} of type {} is not convertible to float.'
---> 63 .format(coord, type(coord)))
64 if math.isnan(float(coord)):
65 raise ValueError('Location values cannot contain NaNs.')
ValueError: Location should consist of two numerical values, but 'lat' of type <class 'str'> is not convertible to float.
我已经查看了LAT列,它确实是一个浮点数,但我不知道如何修复它,无法继续前进。我将不胜感激任何帮助。
<details>
<summary>英文:</summary>
I have recently been using python and I am doing a job using Foursquare and data obtained from wikipedia. I am trying to make a map with the following code:
venues_map = folium.Map(location=[latitude, longitude], zoom_start=13) # generate map centred of Ciutat Vella
# add a red circle marker to represent the center of the neighborhoods
folium.vector_layers.CircleMarker(
['lat','lng'],
radius=10,
color='red',
popup='Eixample',
fill = True,
fill_color = 'red',
fill_opacity = 0.6
).add_to(venues_map)
# add the shops as blue circle markers
for lat, lng, label in zip(new_df.lat, new_df.lng, new_df.categories):
folium.vector_layers.CircleMarker(
[lat,lng],
radius=5,
color='blue',
popup=label,
fill = True,
fill_color='blue',
fill_opacity=0.6
).add_to(venues_map)
# display map
venues_map
When executing the line I get the following error:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
/opt/conda/envs/Python36/lib/python3.6/site-packages/folium/utilities.py in validate_location(location)
58 try:
---> 59 float(coord)
60 except (TypeError, ValueError):
ValueError: could not convert string to float: 'lat'
During handling of the above exception, another exception occurred:
ValueError Traceback (most recent call last)
<ipython-input-27-7a61c4e1c46b> in <module>
11 fill = True,
12 fill_color = 'red',
---> 13 fill_opacity = 0.6
14 ).add_to(venues_map)
15
/opt/conda/envs/Python36/lib/python3.6/site-packages/folium/vector_layers.py in __init__(self, location, radius, popup, tooltip, **kwargs)
303 def __init__(self, location, radius=10, popup=None, tooltip=None, **kwargs):
304 super(CircleMarker, self).__init__(location, popup=popup,
--> 305 tooltip=tooltip)
306 self._name = 'CircleMarker'
307 self.options = path_options(line=False, radius=radius, **kwargs)
/opt/conda/envs/Python36/lib/python3.6/site-packages/folium/map.py in __init__(self, location, popup, tooltip, icon, draggable, **kwargs)
275 super(Marker, self).__init__()
276 self._name = 'Marker'
--> 277 self.location = validate_location(location)
278 self.options = parse_options(
279 draggable=draggable or None,
/opt/conda/envs/Python36/lib/python3.6/site-packages/folium/utilities.py in validate_location(location)
61 raise ValueError('Location should consist of two numerical values, '
62 'but {!r} of type {} is not convertible to float.'
---> 63 .format(coord, type(coord)))
64 if math.isnan(float(coord)):
65 raise ValueError('Location values cannot contain NaNs.')
ValueError: Location should consist of two numerical values, but 'lat' of type <class 'str'> is not convertible to float.
I have looked and the LAT column if it is a float, I don't know how to fix it and I can't move forward. I would appreciate any help.
The value of Lat comes from the following table, in which it shows the name of the neighborhoods of Barcelona and shows its latitude and longitude to be able to take from there the values to form the map:
[enter image description here][1]
[1]: https://i.stack.imgur.com/AeMsu.png
</details>
# 答案1
**得分**: 0
在你的代码中:
```python
folium.vector_layers.CircleMarker(
['lat','lng'],
radius=10,
color='red',
popup='Eixample',
fill=True,
fill_color='red',
fill_opacity=0.6
).add_to(venues_map)
你尝试传递一个包含字符串的元组。
根据文档:https://python-visualization.github.io/folium/modules.html
location (tuple[float, float]) – 纬度和经度对(北纬,东经)
位置元组应该包含两个浮点数。尝试移除 'lat' 和 'lng' 的引号,就应该可以了。
英文:
In your code:
folium.vector_layers.CircleMarker(
['lat','lng'],
radius=10,
color='red',
popup='Eixample',
fill = True,
fill_color = 'red',
fill_opacity = 0.6
).add_to(venues_map)
You are trying to pass in a tuple of strings.
Reading the documentation : https://python-visualization.github.io/folium/modules.html
> location (tuple[float, float]) – Latitude and Longitude pair (Northing, Easting)
The location tuple takes two floats. Try to remove the "" from lat and lng and you should be good.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论