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

Posted

技术标签:

【中文标题】Pandas DataFrame 到 HTML:格式化值以显示居中【英文标题】:Pandas DataFrame to HTML: Formatting the values to display centered 【发布时间】:2018-09-28 22:27:30 【问题描述】:

我有一个pandas DataFrame 并且正在使用DataFrame.to_html 方法生成一个可以在HTML 电子邮件中发送的表格。我只是希望某些列中的值居中,但也想知道一般如何将格式应用于表格。我曾尝试在使用 to_html 之前应用找到的文档 HERE 以及使用 df.style,如下所示:

df.style.set_properties(**'text-align':'center')

但我仍然让我的所有值左对齐(标题除外,它们是居中的)。

将我的所有(或子集)列值居中的正确方法是什么,还有哪些其他可用于格式化的选项? (例如,加粗文本、更改背景或边框颜色等)

此外,应该在什么阶段应用这种格式?在to_html 方法内还是在我尝试使用df.style 之前?谢谢!

【问题讨论】:

【参考方案1】:

经过一些研究和Bubble Bubble Bubble Gut 的帮助,这可以通过将所有<tr> 标签替换为<tr align="center"> 来轻松完成:

html2 = html.replace('<tr>', '<tr align="center">')
print(html2)

【讨论】:

或者像这样使用 CSS 例如 TD 和 TH 标签 html = str(df_group[:5].to_html()).replace('&lt;td&gt;', '&lt;td style="text-align: left"&gt;').replace('&lt;th&gt;', '&lt;th style="text-align: left"&gt;')【参考方案2】:

我建议在to_html 函数中使用formatters,参数说明:

格式化程序:单参数函数的列表或字典,可选格式化程序函数,按位置或名称应用于列元素, 默认无。每个函数的结果必须是一个 unicode 字符串。 列表的长度必须等于列数。

例如,如果您想将所有 Name 列加粗:

df.to_html(formatters='Name': lambda x: '<b>' + x + '</b>')

让我知道它是否有效!

【讨论】:

这对我来说很有意义。您能否举个例子,使用formatters 将所有单元格值(所有列)居中? @RichardGolz 如果只是为了使单元格居中,我可能只是修改使用df.to_html 后得到的字符串,方法是在align='center' 标记内添加align='center',使其变为@ 987654328@,对我来说,这比将每列居中更直接。 类似html[:6] + ' align="center"' + html[6:] 我现在有了&lt;table align="center" border="1" class="dataframe"&gt;,但它似乎仍然是左对齐的。叹。下面我确实看到了&lt;thead&gt; &lt;tr style="text-align: right;"&gt; - 想知道这是否与它有关(尽管我的数据显示为左对齐) html.replace('text-align: right;', 'text-align: center') 解决问题了吗?【参考方案3】:

我通过对 CSS 和 python 代码稍作改动解决了这个问题。这是我的python代码:

dft.to_html(classes=["table-bordered", "table-striped", "table-hover", "isi"]

我创建“isi”类并用 CSS 写成这样:

.isi 
text-align:center; 

这是结果 Values Centered

【讨论】:

不熟悉CSS的朋友,代码应该是完整的。代码示例在“isi”的定义中给出了“无效语法”错误

以上是关于Pandas DataFrame 到 HTML:格式化值以显示居中的主要内容,如果未能解决你的问题,请参考以下文章

pandas Dataframe,将特定值从一个单元格移动到另一个单元格

pandas将列表list插入到dataframe的单元格中pandas使用read_csv函数读取文件并设置保留数值的前置0( leading zeroes)

Pandas3——excel【行、列、单元格】

如何将带有 NaN 的合并 Excel 单元格读入 Pandas DataFrame

将 numpy.array 存储在 Pandas.DataFrame 的单元格中

Pandas:将 DataFrame 转换为每个单元格的均值和标准差