I am building report in HTML format using pd.to_html() method. Can anyone clarify how can i format cells with values between -0.5 and 0.5 with green back ground for particular columns of data frame?
You can do custom formatting of DataFrames using the style
attribute (introduced starting from pandas v0.17.1).
An example to do what you want:
df = pd.DataFrame(np.random.randn(5,5), columns=list('ABCDE'))
def highlight_vals(val, min=-0.5, max=0.5, color='green'):
if min < val < max:
return 'background-color: %s' % color
else:
return ''
df.style.applymap(highlight_vals, subset=['B', 'C', 'D'])
gives you
See this notebook for the full example: http://nbviewer.jupyter.org/gist/jorisvandenbossche/8b74f71734cd6d75a58c5a048261a7a7
And see the docs for more example how to format the dataframe: http://pandas.pydata.org/pandas-docs/stable/style.html
To write the output to a file, you can do:
with open('filename.html', 'w') as f:
f.write(df.style.applymap(highlight_vals, subset=['B', 'C', 'D'])
.set_table_attributes("border=1").render())
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With