Раскраска одного столбца панд Dataframe.to_html () - PullRequest
0 голосов
/ 06 декабря 2018

До того, как это было помечено как дубликат, я пробовал код из следующих тем, и ни один из них не работал для меня до сих пор:

[ Раскраска одного столбца в панде dataframe ]

[ Форматировать цвет ячейки в фрейме данных panda в соответствии с несколькими условиями ]

[ как раскрасить выбранные столбцы в фрейме данных python? ]

У меня есть код, который создает три кадра данных панд, который выглядит следующим образом:

         RowName   Orders   Market  StartTime  StopTime
Status
good     A          9       gold    10:00:00    10:09:45
                             .         
                             .
                             .
bad      B          60      silver  07:54:43    08:02:12

         RowName   Orders   Market  StartTime  StopTime
Status
good     E          19      plat.    10:00:00    10:09:45
                             .         
                             .
bad      F          54      mercury  07:54:43    08:02:12

         RowName   Orders   Market  StartTime  StopTime
Status
great     D          3       alum.   10:00:00    10:09:45
                             .         
                             .
ok        C          70      bronze  07:54:43    08:02:12

, где столбец Status устанавливается как индекс каждого кадра

Для каждого кадра я хочу выделить столбец StartTime значением #D42A2A (он же красный) независимо от того, какое значение находится в данной ячейке.

Как это можно сделать?

НАИБОЛЕЕ ПОСЛЕДНИЕ НЕПРАВИЛЬНЫЕ ПОПЫТКИ:

  1. def column_style(col): if col.Name == 'StartTime': return pd.Series('bgcolor: #d42a2a', col.index)

  2. def col_color(data): color = 'red' if data != '' else 'black' return 'color: %s' %color frame.style.applymap(col_color, subset=['StartTime'])

, но это также не помогает.

ПРИМЕЧАНИЕ:

  1. Я использую VI в оболочке linux

  2. Весь скрипт вызывается IE (Internetпроводник), поэтому вывод сценария html

  3. Я использую BS (Beautifulsoup), чтобы собрать данные с нескольких сайтов и объединить результаты на одной странице {* после очистки исходноговеб-сайт и создав нужный веб-сайт (назовите его Page1), я попытался очистить Page1 тем же сценарием и добавить строки html с помощью метода .attrs, но это «не удалось», т. е. время ожидания веб-сервера во время выполнения}

Ответы [ 2 ]

0 голосов
/ 08 декабря 2018

Если кто-то использует BeautifulSoup для анализа веб-сайта, а затем использует pandas для создания DataFrame, к которому вы, возможно, захотите добавить стили, вы можете сделать что-то вроде:

(перед этим вы уже импортировали; импортировалиbeautifulsoup, очистил ваш сайт и создал ваш фрейм данных)

variable_name = beautifulsoup(dataframe_name.to_html())

list = []

`for table in variable_name.findAll('table'):`

  `for tbody in variable_name.findAll('table'):`

    `for td in variable_name.findAll('tbody'):`

         `list.append(td)`

list[td_index]['attribute_name'] = 'attribute_value'

Это добавит вашвсе ваши данные таблицы в список, и вы можете выбрать любой элемент из этого списка и добавить / обновить атрибут тега

(если более эффективный способ, пожалуйста, прокомментируйте, чтобы помочь улучшить)

0 голосов
/ 07 декабря 2018

Давайте попробуем это:

import pandas as pd
import numpy as np

np.random.seed(24)
df = pd.DataFrame({'A': np.linspace(1, 10, 10)})

df = pd.concat([df, pd.DataFrame(np.random.randn(10, 4), columns=list('BCDE'))],
               axis=1)
df.iloc[0, 2] = np.nan

def highlight_column(s, col):
    return ['background-color: #d42a2a' if s.name == col else '' for v in s.index]

df.style.apply(highlight_column, col = 'B')

Вывод:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...