Изменение фонового цвета строк в кадре данных с использованием стиля Python - PullRequest
0 голосов
/ 04 октября 2018

У меня есть такой фрейм данных:

name       color parking_space
0  Terminal 1, 2   Green Lot            40
1     Terminal 4    Blue Lot            81
2     Terminal 5  Yellow Lot            59
3     Terminal 7  Orange Lot            45
4     Terminal 8     Red Lot            31
5      Long-Term         Lot            55

Это данные, очищенные с использованием селена. Я хочу изменить цвет фона всей строки на основе значения parking_space.Вот код, который я попробовал. Но вывод этого - датафрейм, который является той же самой старой базой данных.код:

terminal_name=driver.find_elements_by_class_name("tp-h-mod")
terminal_color=driver.find_elements_by_class_name("terminals-lot")
terminal_capacity=driver.find_elements_by_class_name("terminal-percentage")
mylist=[]
mylist1=[]
mylist2=[]
list1=[]
for data in terminal_name:
        mylist.append(data.text)
for data in terminal_color:
        mylist1.append(data.text)
for data in terminal_capacity:
        mylist2.append(data.text)
for i in range(6):
    text=mylist2[i]
    m=text.split('%')[0]
    list1.append(m)
df=pd.DataFrame({'name':mylist,'color':mylist1,'parking_space':list1})
def highlight(row):
    if int(row.parking_space[:2]) <= 25:
        return ['background-color: green']*3
    elif int(row.parking_space[:2]) >=26 and int(row.parking_space[:2]) <=50:
        return ['background-color:yellow']*3
    else:
        return ['background-color:red']*3
df.style.apply(highlight, axis=1)
print(df)
path = 'C:/Users/InterCEP/Desktop/parking/'
df.to_html(path+'parking.html')

1 Ответ

0 голосов
/ 04 октября 2018

Итак, как только вы решите сравнение str / int с чем-то вроде int(row['parking_space'][:2]), похоже, что это было решено в этом вопросе .

Использование непринятого ответаиз этого вопроса:

def highlight(row):
    if int(row.parking_space[:2]) <= 25:
        return ['background-color: green']*3
    elif int(row.parking_space[:2]) >=26 and int(row.parking_space[:2]) <=50:
        return ['background-color:yellow']*3
    else:
        return ['background-color:red']*3

Затем, чтобы сохранить стилизованный кадр данных, вы присваиваете переменную, как показано ниже

df_styled=df.style.apply(highlight, axis=1)

df_styled теперь <pandas.io.formats.style.Styler object, которая генерирует строкуАвтономный CSS и HTML.

Если вы затем наберете df_styler.render(), вы получите готовый HTML-код для сохранения в виде открытого текста и визуализации в браузере:

<style  type="text/css" >
    #T_20b96880_c80e_11e8_a82d_a0afbd198380row0_col0 {
            background-color: yellow;
            ...
...