Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python对开本错误:";并非所有参数都在字符串格式化过程中转换;_Python_Html_Python 3.x_Pandas_Folium - Fatal编程技术网

Python对开本错误:";并非所有参数都在字符串格式化过程中转换;

Python对开本错误:";并非所有参数都在字符串格式化过程中转换;,python,html,python-3.x,pandas,folium,Python,Html,Python 3.x,Pandas,Folium,我正在尝试创建一个显示火山位置的网络地图。我正在使用Python中的Folium库,并使用HTML进行设计。我还使用了熊猫数据框中的数据。但是,当我运行代码时,会出现以下错误: 回溯(最近一次呼叫最后一次): 文件“webmap.py”,第20行,在 iframe=folium.iframe(html=html%(名称,名称,str(elev)),宽度=200,高度=100) TypeError:在字符串格式化过程中并非所有参数都已转换 这是我的代码: import folium import

我正在尝试创建一个显示火山位置的网络地图。我正在使用Python中的Folium库,并使用HTML进行设计。我还使用了熊猫数据框中的数据。但是,当我运行代码时,会出现以下错误:

回溯(最近一次呼叫最后一次):
文件“webmap.py”,第20行,在
iframe=folium.iframe(html=html%(名称,名称,str(elev)),宽度=200,高度=100)
TypeError:在字符串格式化过程中并非所有参数都已转换
这是我的代码:

import folium
import pandas

data = 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")
importfolium
进口大熊猫
data=pandas.read_csv(“火山”txt)
纬度=列表(数据[“纬度])
经度=列表(数据[“LON”])
高程=列表(数据[“标高])
名称=列表(数据[“名称”])
html=”“”
火山名称:

高度:%s米 """ map=folium.map(位置=[38.58,-99.09],缩放开始=6,tiles=“雄蕊地形”) fg=folium.FeatureGroup(name=“我的地图”) 对于lat、lon、elev,zip中的名称(纬度、经度、高程、名称): iframe=folium.iframe(html=html%(名称,名称,str(elev)),宽度=200,高度=100) fg.add_child(folium.Marker(位置=[lat,lon],popup=folium.popup(iframe),icon=folium.icon(color=“green”)) 映射添加子对象(前景) save(“Map1Advacned.html”)
熊猫数据框包含关于每个火山的信息,包括它的位置(纬度和经度)、海拔和名称,我在代码的第一部分将这些信息解析为Python数组


有人知道为什么会发生这种错误吗?任何帮助都将不胜感激。提前谢谢

我的补充数据是新加坡政府气象站的温度数据。我对它进行了调整,使之符合你的例子

  • 更改了
    位置
    缩放
    参数,因为新加坡位于一个不同的地方,而且要小得多;-)
  • 您的核心问题是将字符串替换为
    html
    变量。我更喜欢f字串,所以我把它改成了这个,它可以工作
  • importfolium
    作为pd进口熊猫
    df=pd.DataFrame({'latitude':[1.3764,1.256,1.3337,1.3135,1.3399,1.2799],
    “经度”:[103.8492103.679103.7768103.9625103.8878103.8703],
    “值”:[32.3,31.7,32.2,29.9,32.1,32.5],
    ‘工具提示’:[‘2020年8月9日Ang Mo Kio大道32.3号下午1:00’,
    “榕树路31.7号2020年8月9日下午1:00”,
    “克莱门蒂路32.2号,2020年8月9日下午1:00”,
    “东海岸公园道29.9 2020年8月9日下午1:00”,
    “金川路32.1号2020年8月9日下午1:00”,
    “码头花园大道32.5号,2020年8月9日下午1:00”]})
    data=df.copy().rename({'latitude':“LAT”,'longide':“LON”,'value':“ELEV”,'tooltip':“NAME”},axis=1)
    纬度=列表(数据[“纬度])
    经度=列表(数据[“LON”])
    高程=列表(数据[“标高])
    名称=列表(数据[“名称”])
    def myhtml(名称,elev):
    返回f“”
    火山名称:

    高度:{elev}m """ map=folium.map(位置=[1.34103.82],缩放开始=12,tiles=“雄蕊地形”) fg=folium.FeatureGroup(name=“我的地图”) 对于lat、lon、elev,zip中的名称(纬度、经度、高程、名称): iframe=folium.iframe(html=myhtml(名称,elev),宽度=200,高度=100) fg.add_child(folium.Marker(位置=[lat,lon],popup=folium.popup(iframe),icon=folium.icon(color=“green”)) 映射添加子对象(前景) save(“Map1Advacned.html”)
    import folium
    import pandas
    
    data = 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")
    
    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")