pandas: HTML output with conditional formatting pandas: HTML output with conditional formatting pandas pandas

pandas: HTML output with conditional formatting


You can use the DataFrame to_html method, which comes with formatters argument.

An easier solution would be to surround by <span class="significant"> and </span>, (rather than *). Note: by default this will be escaped (i.e. < becomes <) so you will need to use the escape=False argument.


Since pandas 0.17.1, it is easy to apply custom formattingto the data frame HTML representation using thestyling api.

import pandas as pddf = pd.DataFrame({    'correlation':[0.5, 0.1,0.9],    'p_value':[0.1,0.8,0.01]})styled_df = df.style.apply(    lambda x: ['font-weight: bold; background-color: yellow'               if value <= 0.01 else '' for value in x])styled_df

enter image description here

The output is rendered automatically in interfaces such as the Jupyter Notebookand the string representation of the HTML can be returned with the render()method.

print(styled_df.render())
<style  type="text/css" >    #T_4e49b9da_8451_11e8_9166_605718a99a7frow2_col1 {            font-weight:  bold;             background-color:  yellow;            font-weight:  bold;             background-color:  yellow;        }</style>  <table id="T_4e49b9da_8451_11e8_9166_605718a99a7f" > <thead>    <tr>         <th class="blank level0" ></th>         <th class="col_heading level0 col0" >correlation</th>         <th class="col_heading level0 col1" >p_value</th>     </tr></thead> <tbody>    <tr>         <th id="T_4e49b9da_8451_11e8_9166_605718a99a7flevel0_row0" class="row_heading level0 row0" >0</th>         <td id="T_4e49b9da_8451_11e8_9166_605718a99a7frow0_col0" class="data row0 col0" >0.5</td>         <td id="T_4e49b9da_8451_11e8_9166_605718a99a7frow0_col1" class="data row0 col1" >0.1</td>     </tr>    <tr>         <th id="T_4e49b9da_8451_11e8_9166_605718a99a7flevel0_row1" class="row_heading level0 row1" >1</th>         <td id="T_4e49b9da_8451_11e8_9166_605718a99a7frow1_col0" class="data row1 col0" >0.1</td>         <td id="T_4e49b9da_8451_11e8_9166_605718a99a7frow1_col1" class="data row1 col1" >0.8</td>     </tr>    <tr>         <th id="T_4e49b9da_8451_11e8_9166_605718a99a7flevel0_row2" class="row_heading level0 row2" >2</th>         <td id="T_4e49b9da_8451_11e8_9166_605718a99a7frow2_col0" class="data row2 col0" >0.9</td>         <td id="T_4e49b9da_8451_11e8_9166_605718a99a7frow2_col1" class="data row2 col1" >0.01</td>     </tr></tbody> </table>