pandas DataFrame.to_html将html表中的负数更改为红色

时间:2018-08-21 08:42:26

标签: python python-3.x python-2.7 pandas

我有一个简单的pandas DataFrame,我需要将其转换为此类的html表

import pandas as pd
df = pd.DataFrame({
                'Col1': ['20180817','20180816'],
                'Col2': [3541, 2547],
                'Col3': [-254, 147],
                'Col4': ['-74.5%', '25.28%']
             })

df_html = df.to_html(index=False, col_space=500)

,但还需要将所有负数的颜色更改为红色,例如

<td>-74.5%</td>

有没有简单的方法,该怎么做?非常感谢您的提示。

1 个答案:

答案 0 :(得分:0)

在转换为html之前更新您的列:

df['Col4'] = df['Col4'].map(lambda x: f'<font color="red">{x}</font>' if x[0] == '-' else x)
df_html = df.to_html(index=False, col_space=500, escape=False)

结果:

<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th style="min-width: 500;">Col1</th>
      <th style="min-width: 500;">Col2</th>
      <th style="min-width: 500;">Col3</th>
      <th style="min-width: 500;">Col4</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>20180817</td>
      <td>3541</td>
      <td>-254</td>
      <td><font color="red">-74.5%</font></td>
    </tr>
    <tr>
      <td>20180816</td>
      <td>2547</td>
      <td>147</td>
      <td>25.28%</td>
    </tr>
  </tbody>
</table>