You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Jupyter中让folium弹窗以字符串形式展示导入数据而非表格

问题

我从Excel加载了Malibu Beach、Commerce和Long Beach的数据,用于folium地图的弹窗展示。使用以下代码后,弹窗以表格形式显示,我希望将其改为字符串形式,请告知修改方法:

import folium
import pandas as pd
import io

data = '''
Name A1 A2 A3 LAT LON
"Malibu Beach" 0.63 0.55 0.95 34.03194 -118.698387
'Commerce' 0.17 0.45 0.25 34.00031 -118.159770
"Long Beach" 0.19 0.21 0.09 33.77171 -118.181310'''

data = pd.read_csv(io.StringIO(data), delim_whitespace=True)

map = folium.Map([data.LAT.mean(),
data.LON.mean()],zoom_control=True,zoom_start = 9,scrollWheelZoom=True,tiles = "Stamen Terrain")

for i in range(len(data)):
    html = data.loc[i,['Name','A1','A2','A3']].to_frame().T.to_html(
      classes="table table-striped table-hover table-condensed table-responsive")
    popup = folium.Popup(html, max_width=500)
    folium.Marker([data.iloc[i]['LAT'], data.iloc[i]['LON']],popup =folium.Popup(html, max_width=500),icon=folium.Icon(icon='cloud',color='darkblue')).add_to(map)

map
修改方法

核心是把原代码中生成HTML表格的逻辑,换成手动拼接字符串的方式,直接构造弹窗需要的文本内容。

修改后的完整代码如下:

import folium
import pandas as pd
import io

data = '''
Name A1 A2 A3 LAT LON
"Malibu Beach" 0.63 0.55 0.95 34.03194 -118.698387
'Commerce' 0.17 0.45 0.25 34.00031 -118.159770
"Long Beach" 0.19 0.21 0.09 33.77171 -118.181310'''

data = pd.read_csv(io.StringIO(data), delim_whitespace=True)

map = folium.Map([data.LAT.mean(),
data.LON.mean()],zoom_control=True,zoom_start = 9,scrollWheelZoom=True,tiles = "Stamen Terrain")

for i in range(len(data)):
    # 提取当前行的字段值
    name = data.iloc[i]['Name']
    a1 = data.iloc[i]['A1']
    a2 = data.iloc[i]['A2']
    a3 = data.iloc[i]['A3']
    # 拼接成目标字符串格式
    popup_text = f"""
    名称: {name}
    A1: {a1}
    A2: {a2}
    A3: {a3}
    """
    # 创建字符串内容的弹窗
    popup = folium.Popup(popup_text, max_width=500)
    folium.Marker([data.iloc[i]['LAT'], data.iloc[i]['LON']], 
                  popup=popup,
                  icon=folium.Icon(icon='cloud',color='darkblue')).add_to(map)

map

关键修改点

  • 移除原代码中生成HTML表格的to_frame().T.to_html()逻辑,改为直接提取每行的单个字段值
  • 使用f-string拼接成你需要的分行字符串格式,每个字段单独占一行
  • 初始化folium.Popup时直接传入拼接好的文本字符串,不再传入HTML内容

这样弹窗就会以纯文本字符串的形式展示,符合你的需求。

内容的提问来源于stack exchange,提问作者White Angel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 09:58:15