1. ホーム
  2. python

[解決済み】str型オブジェクトの不明なフォーマットコード'f' - Folium

2022-01-28 21:36:20

質問

私は以下のようなデータフレームを持っています。

    Number  Names   latitude    longitude
0   1       Josh    25.713277   80.746531
1   2       Jon     25.713277   80.746531
2   3       Adam    25.713277   80.746531
3   4       Barsa   25.713277   80.746531
4   5       Fekse   25.713277   80.746531
5   6       Bravo   25.713277   80.746531
6   7       Levine  25.713277   80.746531
7   8       Talyo   25.713277   80.746531
8   9       Syden   25.713277   80.746531
9   10      Zidane  25.713277   80.746531

このデータフレームに対してフォリウムマップを作成しようとしています。 Number の値に応じて、何らかの色で表示されるようにする。 Names カラムを次のようなコードで作成します。 1から10まで を、Namesに基づいた場所に対して何らかの色で表示させる。例えば 1 で表示する必要があります。 lightblue , 2 で表示する必要があります。 green の色で表示し、残りの数値は red

for Number,Names,latitude,longitude in zip(dsa['Number'],dsa['Names'],dsa['latitude'],dsa['longitude']):
    folium.Marker(location=[latitude,longitude],
                  icon=folium.DivIcon(
                      html=f"""<div style="font-family: courier new; color: {'lightblue' if Names == 'Josh' else 'green' if Names == 'Jon' else 'red'}">{"{:.0f}".format(Number)}</div>""")
                  ).add_to(m)
m.save(os.path.join('color_popups1231.html'))

しかし、これを実行すると、次のようなエラーが発生します。

ValueError: Unknown format code 'f' for object of type 'str'

何が足りないのでしょうか?

解決方法は?

その f のフォーマットコードは "{:.0f}".format(Number) は浮動小数点数を要求しているのに、Pythonの文字列フォーマッタに変数 Number から派生したものです。 dsa['Number'] は、データフレームからの文字列値です。を変換する必要があります。 Number を浮動小数点数に変換してからフォーマッタに渡します。 "{:.0f}".format(float(Number)) の代わりに