我有一个如下所示的熊猫数据框
print(df_t)
foo bar
a 1 2
b 9 7
这会生成以下 html
<table border="1" class="dataframe">
<thead>
<tr style="text-align: center;">
<th></th>
<th>foo</th>
<th>bar</th>
</tr>
</thead>
<tbody>
<tr>
<th>a</th>
<td>1</td>
<td>2</td>
</tr>
<tr>
<th>b</th>
<td>9</td>
<td>7</td>
</tr>
</tbody>
</table>
我想将行中较大的单元格值加粗 例如 在第一行,要“加粗”值 2,在第二行,要加粗值 9。
答案 0 :(得分:2)
使用styles并通过Styler.render
生成html:
def highlight_max(s):
'''
highlight the maximum in a Series bolder.
'''
is_max = s == s.max()
return ['font-weight: bolder' if v else '' for v in is_max]
html = df.style.apply(highlight_max, axis=1).render()
print (html)
答案 1 :(得分:1)
你可以试试jinja2
from jinja2 import Template #pip install Jinja2
s = """<table border="1" class="dataframe">
<thead>
<tr style="text-align: center;">
<th></th>
{% for cloumn in df.columns %}
<th>{{cloumn}}</th>
{% endfor %}
</tr>
</thead>
<tbody>
{% for index, row in df.iterrows() %}
<tr>
<th>{{index}}</th>
{% for val in row.values %}
{% if val == row.values.max() %}
<td><strong>{{val}}<strong></td>
{% else -%}
<td>{{val}}</td>
{% endif %}
{% endfor %}
</tr>
{% endfor %}
</tbody>
</table>"""
output_html = Template(s).render({'df': df})
print(output_html)
<table border="1" class="dataframe">
<thead>
<tr style="text-align: center;">
<th></th>
<th>foo</th>
<th>bar</th>
</tr>
</thead>
<tbody>
<tr>
<th>a</th>
<td>1</td>
<td><strong>2<strong></td>
</tr>
<tr>
<th>b</th>
<td><strong>9<strong></td>
<td>7</td>
</tr>
</tbody>
</table>