亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Python Folium 錯誤:“并非所有參數都在字符串格式化期間轉換”

Python Folium 錯誤:“并非所有參數都在字符串格式化期間轉換”

四季花海 2023-05-09 09:35:42
我正在嘗試創建一個顯示火山位置的網絡地圖。我在 Python 中使用 Folium 庫,并使用 HTML 對其進行設計。我也在使用來自 Pandas DataFrame 的數據。但是,當我運行我的代碼時,出現以下錯誤:Traceback (most recent call last):  File "webmap.py", line 20, in <module>    iframe = folium.IFrame(html=html % (name, name, str(elev)), width=200, height=100)TypeError: not all arguments converted during string formatting這是我的代碼:import foliumimport pandasdata = pandas.read_csv("Volcanoes.txt")latitudes = list(data["LAT"])longitudes = list(data["LON"])elevations = list(data["ELEV"])names = list(data["NAME"])html = """Volcano name:<br><a href="https://www.google.com/search?q=%%22%%s%%22" target="_blank">%s</a><br>Height: %s m"""map = folium.Map(location=[38.58, -99.09], zoom_start=6, tiles="Stamen Terrain")fg = folium.FeatureGroup(name="My Map")for lat, lon, elev, name in zip(latitudes, longitudes, elevations, names):    iframe = folium.IFrame(html=html %(name, name, str(elev)), width=200, height=100)    fg.add_child(folium.Marker(location=[lat, lon], popup=folium.Popup(iframe), icon=folium.Icon(color="green")))map.add_child(fg)map.save("Map1Advacned.html")Pandas DataFrame 包含有關每座火山的信息,包括其位置(緯度和經度)、海拔和名稱,我在代碼的第一部分將其解析為 Python 數組。有誰知道為什么會出現這個錯誤?任何幫助將非常感激。提前致謝!
查看完整描述

1 回答

?
aluckdog

TA貢獻1847條經驗 獲得超7個贊

我的補充數據是新加坡政府氣象站溫度數據。我已經對其進行了操作以適合您的示例

  1. 更改locationzoom參數,因為新加坡在不同的地方并且小得多;-)

  2. 您的核心問題是將字符串替換為html變量。我更喜歡 f-strings,所以將其更改為這個并且它有效。

import folium

import pandas as pd


df = pd.DataFrame({'latitude': [1.3764, 1.256, 1.3337, 1.3135, 1.3399, 1.2799],

 'longitude': [103.8492, 103.679, 103.7768, 103.9625, 103.8878, 103.8703],

 'value': [32.3, 31.7, 32.2, 29.9, 32.1, 32.5],

 'tooltip': ['32.3 Ang Mo Kio Avenue 5 August 09, 2020 at 01:00PM',

  '31.7 Banyan Road August 09, 2020 at 01:00PM',

  '32.2 Clementi Road August 09, 2020 at 01:00PM',

  '29.9 East Coast Parkway August 09, 2020 at 01:00PM',

  '32.1 Kim Chuan Road August 09, 2020 at 01:00PM',

  '32.5 Marina Gardens Drive August 09, 2020 at 01:00PM']})


data = df.copy().rename({'latitude':"LAT",'longitude':"LON",'value':"ELEV",'tooltip':"NAME"}, axis=1)

latitudes = list(data["LAT"])

longitudes = list(data["LON"])

elevations = list(data["ELEV"])

names = list(data["NAME"])


def myhtml(name, elev):

    return f"""

    Volcano name:<br>

    <a href="https://www.google.com/search?q=%%22%{name}%%22" target="_blank">{name}</a><br>

    Height: {elev} m

    """

map = folium.Map(location=[1.34, 103.82], zoom_start=12, tiles="Stamen Terrain")

fg = folium.FeatureGroup(name="My Map")


for lat, lon, elev, name in zip(latitudes, longitudes, elevations, names):

    iframe = folium.IFrame(html=myhtml(name, elev), width=200, height=100)

    fg.add_child(folium.Marker(location=[lat, lon], popup=folium.Popup(iframe), icon=folium.Icon(color="green")))


map.add_child(fg)

map.save("Map1Advacned.html")


查看完整回答
反對 回復 2023-05-09
  • 1 回答
  • 0 關注
  • 184 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號