为熊猫Dataframe.to_html()着色

时间:2018-12-06 20:20:01

标签: python pandas dataframe

在将其标记为重复之前,我已经尝试了以下主题中的代码,到目前为止,没有一个对我有用:

[Colouring one column of pandas dataframe]

[Format the color of a cell in a panda dataframe according to multiple conditions]

[how to color selected columns in python dataframe?]

我有生成三个熊猫数据框的代码,如下所示:

         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. 我正在Linux shell中使用VI

  2. 整个脚本正在由IE(互联网浏览器)调用,因此脚本的输出为html

  3. 我正在使用BS(beautifulsoup)从几个站点抓取数据并将结果汇​​总到一页上 {*在抓取初始网站并创建所需的网站(称为Page1)之后,我试图在同一脚本中抓取Page1,并通过.attrs方法添加html行,但是此操作“失败”,即网络服务器在运行期间超时}

2 个答案:

答案 0 :(得分:1)

让我们尝试一下:

ptr

输出:

enter image description here

答案 1 :(得分:0)

如果有人使用BeautifulSoup解析网站,然后使用熊猫创建可能要添加样式的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'

这会将您所有的表数据添加到列表中,您可以从该列表中选择任何元素并添加/更新标签属性

(如果需要更有效的方法,请发表评论以帮助改进)