I am trying to write a paper in IPython notebook, but encountered some issues with display format. Say I have following dataframe df, is there any way to format var1 and var2 into 2 digit decimals and var3 into percentages.
       var1        var2         var3     id                                               0    1.458315    1.500092   -0.005709    1    1.576704    1.608445   -0.005122     2    1.629253    1.652577   -0.004754     3    1.669331    1.685456   -0.003525    4    1.705139    1.712096   -0.003134    5    1.740447    1.741961   -0.001223    6    1.775980    1.770801   -0.001723     7    1.812037    1.799327   -0.002013     8    1.853130    1.822982   -0.001396     9    1.943985    1.868401    0.005732   The numbers inside are not multiplied by 100, e.g. -0.0057=-0.57%.
format({'var1': "{:. 2f}",'var2': "{:. 2f}",'var3': "{:. 2%}"}) Thanks!
You can calculate the percentage of total with the groupby of pandas DataFrame by using DataFrame. groupby() , DataFrame. agg() , DataFrame. transform() methods and DataFrame.
The accepted answer suggests to modify the raw data for presentation purposes, something you generally do not want. Imagine you need to make further analyses with these columns and you need the precision you lost with rounding.
You can modify the formatting of individual columns in data frames, in your case:
output = df.to_string(formatters={     'var1': '{:,.2f}'.format,     'var2': '{:,.2f}'.format,     'var3': '{:,.2%}'.format }) print(output)   For your information '{:,.2%}'.format(0.214) yields 21.40%, so no need for multiplying by 100.
You don't have a nice HTML table anymore but a text representation. If you need to stay with HTML use the to_html function instead.
from IPython.core.display import display, HTML output = df.to_html(formatters={     'var1': '{:,.2f}'.format,     'var2': '{:,.2f}'.format,     'var3': '{:,.2%}'.format }) display(HTML(output))   Update
As of pandas 0.17.1, life got easier and we can get a beautiful html table right away:
df.style.format({     'var1': '{:,.2f}'.format,     'var2': '{:,.2f}'.format,     'var3': '{:,.2%}'.format, }) 
                        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