Skip to content Skip to sidebar Skip to footer

Pandas: Html Output With Conditional Formatting

I am trying to format a table, such that data in each column are formatted in a style depending on their values (similar to conditional formatting in spreadsheet programs). How can

Solution 1:

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 &lt;) so you will need to use the escape=False argument.

Solution 2:

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

import pandas as pd

df = 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.01else''for value in x])
styled_df

enter image description here

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

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

Post a Comment for "Pandas: Html Output With Conditional Formatting"