如何使用 Pandas to_html 将相同的 html bg 颜色应用于所有列

Posted

技术标签:

【中文标题】如何使用 Pandas to_html 将相同的 html bg 颜色应用于所有列【英文标题】:How to apply same html bg color to all columns using Pandas to_html 【发布时间】:2020-12-24 03:25:35 【问题描述】:

我一直在尝试根据标识符数据将相同的背景颜色应用于同一行中的所有单元格。

例如:

如何使整行颜色相同?现在只有日期列是彩色的。

我使用的是df.to_html(),然后是sed

sed -i 's@<td>2020-08-31<\/td>@<td bgcolor="grey">2020-08-31<\/td>@g' <file>
sed -i 's@<td>2020-09-01<\/td>@<td bgcolor="#F49884">2020-09-01<\/td>@g' <file>

我愿意使用 sed/awk 或 Python。

【问题讨论】:

这里定义表格必须如何显示,这就是 CSS 的用途。默认情况下,pandas 生成的 html 表分配有 dataframe 类,可以在 CSS 选择器中使用(如果需要,您可以使用 to_html() 参数进一步自定义实例)。如果您可以在 html 页面中添加内联或外部 CSS 部分(使用类似 table.dataframe td background-color: red 的规则),那么我建议您这样做而不是修改标记(尤其是使用并非旨在解析复杂 html 结构的工具)。 【参考方案1】:

您可以在 Python 中使用 .replace() 执行此操作。

Pandas to_html() 只返回一个表示数据框的 html 字符串。然后,您可以对生成的字符串使用任何 Python 字符串操作。

例如:

def add_bg_color(html, identifier):
    return html.replace(
        f"<td>identifier<\/td>", 
        f"<td background-color='grey'>identifier<\/td>"
    )

像这样使用它:

html = df.to_html()
add_bg_color(html, '2020-08-31')

请注意,我还将 bgcolor 更改为 background-color,这是正确的 CSS 属性名称。

【讨论】:

以上是关于如何使用 Pandas to_html 将相同的 html bg 颜色应用于所有列的主要内容,如果未能解决你的问题,请参考以下文章

以与 Jupyter Notebook 相同的样式将 pandas 数据框呈现为 HTML

Pandas Dataframes to_html:突出显示表格行

使用 python pandas 将 csv 转换为 html

pandas DataFrame to_html中的粗体列

Pandas DataFrame 到 HTML:格式化值以显示居中

Python Pandas to_html 无法打印 utf-8 字符