У меня есть dataframe, который выглядит как ниже
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 отображалось в некотором цвете для места, основанного на Именах. Например, 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))
.
f
строки были введены только в Python3.6.