Используйте Styler.apply
.(Для вывода в формат xlsx
используйте функцию to_excel
.)
Предположим, набор данных
other price outlier
0 X 1.99 F,C
1 X 1.49 L,C
2 X 1.99 F
3 X 1.39 N
def hightlight_price(row):
ret = ["" for _ in row.index]
if len(row.outlier.split(",")) >= 2:
ret[row.index.get_loc("price")] = "background-color: yellow"
return ret
df.style.\
apply(hightlight_price, axis=1).\
to_excel('styled.xlsx', engine='openpyxl')
Из документации , "DataFrame.style
атрибут - это свойство, которое возвращает объект Styler."
Мы передаем нашу функцию стиля hightlight_price
в Styler.apply
и требуем строковый характер функции с axis=1
,(Напомним, что мы хотим закрасить ячейку price
в каждой строке на основе информации outlier
в той же строке .)
Наша функция hightlight_price
сгенерирует визуальный стиль для каждого ряда .Для каждой строки row
сначала создается стиль для столбцов other
, price
и outlier
, равный ["", "", ""]
.Мы можем получить правильный индекс, чтобы изменить только часть price
в списке с row.index.get_loc("price")
, как в
ret[row.index.get_loc("price")] = "background-color: yellow"
# ret becomes ["", "background-color: yellow", ""]
Результаты
![enter image description here](https://i.stack.imgur.com/ICp19m.png)