Python 从 CSV 中读取特定列时不显示 Folium 地图?
Python Folium map not displaying when certain column is read from CSV?
我正在尝试为我的公司创建一个用于内部营销目的的 Folium 地图。地图加载正常。但是,当我希望某个列显示在弹出文本中时,地图加载失败。代码如下所示:
#read csv and create dataframe
df = pd.read_csv(sheet_url, delimiter=",", header=0, encoding='latin-1', engine='python')
#turn dataframe from dict into a list
csv = [list(x) for x in df.values]
#organize data into array
locations = []
for location in csv:
coords = [location[0], location[1]]
try:
locations.append({'company' : location[2], 'country' : location[3], 'products' : location[3], 'potential' : location[4], 'method' : location[13], 'note' : location[14], 'hover': f"{location[3]}<br>{location[2]}", 'click': f"<a href={location[9]}>Website</a><br>{location[13]}<br>{location[14]}", 'coordinates' : coords})
except:
print("failed because of some error")
当我尝试将location[14]添加到弹出窗口时出现问题,但它不会在此处抛出错误。
将标记添加到地图的迭代也不会引发错误:
for x in locations:
try:
if x['potential'] == "Current Customer":
folium.Marker(location = (x['coordinates']), popup = x['click'], tooltip = x['hover'], icon=folium.Icon(color='green')).add_to(current_cluster)
else:
folium.Marker(location = (x['coordinates']), popup = x['click'], tooltip = x['hover'], icon=folium.Icon(color='red')).add_to(potential_cluster)
except:
print("failed")
标记为 'note' 的列是我遇到问题的列。
到目前为止我已经尝试过:
- 使用
' '.join(map(str, location[14]))
,同时遍历 csv。地图加载,文本在弹出窗口中,但由空格分隔 (L i k e t h i s
)。
- 将分隔符从
,
更改为其他任何内容,但会产生解析器错误。每行中使用了很多不同的字符,但我不确定分隔符是否有问题。
- 在 Chrome 上,调试器显示
Uncaught SyntaxError: Octal escape sequences are not allowed in template strings.
我认为问题是在我将标记添加到地图时出现的?但是没有抛出任何错误,只是如果我将 'notes' 包含在弹出窗口中,地图将不会加载。感谢您的帮助,谢谢。
这可能是由于字符串中的特殊字符。我有两个想法:
- 确保您拥有最新版本的 folium (0.7.0),此行为已得到改进。
- 在传递之前尝试转义您的文本:
html.escape(my_string)
能否分享 location[14].note
中的确切值?这肯定有助于调试它。此外,使用浏览器的开发人员工具在控制台中查看错误消息。
我正在尝试为我的公司创建一个用于内部营销目的的 Folium 地图。地图加载正常。但是,当我希望某个列显示在弹出文本中时,地图加载失败。代码如下所示:
#read csv and create dataframe
df = pd.read_csv(sheet_url, delimiter=",", header=0, encoding='latin-1', engine='python')
#turn dataframe from dict into a list
csv = [list(x) for x in df.values]
#organize data into array
locations = []
for location in csv:
coords = [location[0], location[1]]
try:
locations.append({'company' : location[2], 'country' : location[3], 'products' : location[3], 'potential' : location[4], 'method' : location[13], 'note' : location[14], 'hover': f"{location[3]}<br>{location[2]}", 'click': f"<a href={location[9]}>Website</a><br>{location[13]}<br>{location[14]}", 'coordinates' : coords})
except:
print("failed because of some error")
当我尝试将location[14]添加到弹出窗口时出现问题,但它不会在此处抛出错误。 将标记添加到地图的迭代也不会引发错误:
for x in locations:
try:
if x['potential'] == "Current Customer":
folium.Marker(location = (x['coordinates']), popup = x['click'], tooltip = x['hover'], icon=folium.Icon(color='green')).add_to(current_cluster)
else:
folium.Marker(location = (x['coordinates']), popup = x['click'], tooltip = x['hover'], icon=folium.Icon(color='red')).add_to(potential_cluster)
except:
print("failed")
标记为 'note' 的列是我遇到问题的列。
到目前为止我已经尝试过:
- 使用
' '.join(map(str, location[14]))
,同时遍历 csv。地图加载,文本在弹出窗口中,但由空格分隔 (L i k e t h i s
)。 - 将分隔符从
,
更改为其他任何内容,但会产生解析器错误。每行中使用了很多不同的字符,但我不确定分隔符是否有问题。 - 在 Chrome 上,调试器显示
Uncaught SyntaxError: Octal escape sequences are not allowed in template strings.
我认为问题是在我将标记添加到地图时出现的?但是没有抛出任何错误,只是如果我将 'notes' 包含在弹出窗口中,地图将不会加载。感谢您的帮助,谢谢。
这可能是由于字符串中的特殊字符。我有两个想法:
- 确保您拥有最新版本的 folium (0.7.0),此行为已得到改进。
- 在传递之前尝试转义您的文本:
html.escape(my_string)
能否分享 location[14].note
中的确切值?这肯定有助于调试它。此外,使用浏览器的开发人员工具在控制台中查看错误消息。