gpt4 book ai didi

python - pandas:带有条件格式的 HTML 输出

转载 作者:IT老高 更新时间:2023-10-28 20:22:38 25 4
gpt4 key购买 nike

我正在尝试格式化表格,以便每列中的数据根据​​其值以某种样式格式化(类似于电子表格程序中的条件格式化)。如何使用 HTML 格式化程序在 pandas 中实现这一点?

一个典型的用例是突出显示表格中的重要值。例如:

    correlation  p-value
0 0.5 0.1
1 0.1 0.8
2 0.9 *0.01*

pandas 允许为 HTML 输出定义自定义格式化程序 - 以获得可以使用的上述输出:

import pandas as pd
from pandas.core import format
from StringIO import StringIO
buf = StringIO()
df = pd.DataFrame({'correlation':[0.5, 0.1,0.9], 'p_value':[0.1,0.8,0.01]})
fmt = format.DataFrameFormatter(df,
formatters={'p_value':lambda x: "*%f*" % x if x<0.05 else str(x)})
format.HTMLFormatter(fmt).write_result(buf)

但是,我想更改重要值的样式(例如,使用粗体)。

一种可能的解决方案是将 CSS 类附加到 <td> HTML 输出中的标签,然后可以使用 CSS 样式表对其进行格式化。上面会变成:

<table border="1" class="dataframe">
<thead>
<tr style="text-align: right;">
<th></th>
<th>correlation</th>
<th>p_value</th>
</tr>
</thead>
<tbody>
<tr>
<td>0</td>
<td> 0.5</td>
<td> 0.10</td>
</tr>
<tr>
<td>1</td>
<td> 0.1</td>
<td> 0.80</td>
</tr>
<tr>
<td>2</td>
<td> 0.9</td>
<td class='significant'> 0.01</td>
</tr>
</tbody>
</table>

编辑:正如@Andy-Hayden 所建议的,我可以通过简单地将星号替换为<span class="signifcant">...</span> 来添加格式。在我的例子中:

import pandas as pd
from StringIO import StringIO
buf = StringIO()
significant = lambda x: '<span class="significant">%f</span>' % x if x<0.05 else str(x)
df = pd.DataFrame({'correlation':[0.5, 0.1,0.9], 'p_value':[0.1,0.8,0.01]})
df.to_html(buf, formatters={'p_value': significant})

较新版本的 pandas 会避开这些标签。为避免将最后一行替换为:

df.to_html(buf, formatters={'p_value': significant}, escape=False)

最佳答案

您可以使用 DataFrame to_html 方法,附带formatters论据。

更简单的解决方案是用 <span class="significant"> 包围和 </span> , (而不是 * )。注意:默认情况下,这将被转义(即 < 变为 &lt; ),因此您需要使用 escape=False论据。

关于python - pandas:带有条件格式的 HTML 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14627380/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com