如何在地图标记弹窗中添加表格数据?求Jupyter实现代码
实现代码(基于folium库)
首先确保安装依赖库:
pip install folium pandas
假设你已经通过pandas读取了Excel表格,得到DataFrame对象df,且表格包含**经度(longitude)、纬度(latitude)**列以及需要展示的A1、A2、A3列。以下是完整实现代码:
import folium import pandas as pd # 如果你还没读取Excel,执行这行(替换为你的文件路径) # df = pd.read_excel("你的文件路径.xlsx") # 创建基础地图(以中国为例,中心坐标设为北京) m = folium.Map(location=[39.9042, 116.4074], zoom_start=5) # 遍历表格每一行,添加标记 for idx, row in df.iterrows(): # 构造弹窗内容,用HTML格式化展示A1、A2、A3数据 popup_content = f""" <div> <p><strong>A1:</strong> {row['A1']}</p> <p><strong>A2:</strong> {row['A2']}</p> <p><strong>A3:</strong> {row['A3']}</p> </div> """ # 创建弹窗,设置宽度 popup = folium.Popup(popup_content, max_width=300) # 添加地图标记 folium.Marker( location=[row['latitude'], row['longitude']], popup=popup, tooltip=row['A1'] # 鼠标悬停时显示的提示文本,可自定义 ).add_to(m) # 在Jupyter Notebook中显示地图 m
补充说明
- 如果你的表格没有经纬度列,需要先通过地理编码获取城市的经纬度,可使用
geopy库:
示例代码(根据城市名获取经纬度):pip install geopyfrom geopy.geocoders import Nominatim geolocator = Nominatim(user_agent="my_app") def get_coords(city_name): location = geolocator.geocode(city_name) if location: return (location.latitude, location.longitude) else: return (None, None) # 假设你的城市名列是'城市' df[['latitude', 'longitude']] = df['城市'].apply(lambda x: pd.Series(get_coords(x))) - 运行代码后,Jupyter Notebook会直接渲染交互地图,点击标记即可弹出包含A1、A2、A3数据的窗口。
内容的提问来源于stack exchange,提问作者White Angel
相关产品推荐
相关产品推荐

