Formatting DataFrame as HTML

Recently, a pandas user, Wouter Overmeire, contributed a to_html function to DataFrame in a pull request. It’s very handy:

In [31]: df
Out[31]:
                        ls    lsc   pop   ccode
year cname     agefrom                        
1950 Australia 15       64.3  15.4  558   AUS  
               40       38.9  20.1  555   AUS  
               65       24.7  10.7  273   AUS  
1955 Australia 25       48.4  26.2  705   AUS  
               50       34    16.6  478   AUS  
               75       26.3  11.7  240   AUS  
1960 Australia 35       47.9  24.7  755   AUS  
               60       29.6  13.5  389   AUS  
1965 Australia 20       57.7  31.1  832   AUS  
               45       41.3  20.3  665   AUS  
               70       30.2  12.9  273   AUS  
1970 Australia 30       57.7  31.1  789   AUS  
               55       42.1  19.4  619   AUS  
1975 Australia 15       91.1  23.1  1225  AUS  
               40       56.3  30.9  744   AUS  
               65       48.8  22.5  440   AUS  
1980 Australia 25       74    44.5  1205  AUS  
               50       60.2  32.8  774   AUS  
               75       62.5  30.8  500   AUS  
1985 Australia 35       72.7  42.8  1180  AUS  

In [32]: df.to_html()

which outputs:


ls lsc pop ccode
year cname agefrom
1950 Australia 15 64.3 15.4 558 AUS
1955 Australia 50 34 16.6 478 AUS
1965 Australia 20 57.7 31.1 832 AUS
1970 Australia 55 42.1 19.4 619 AUS
1980 Australia 25 74 44.5 1205 AUS
1985 Australia 60 59.1 30.8 685 AUS
1995 Australia 30 72 45.7 1430 AUS
2000 Australia 65 60 31.5 663 AUS
2010 Australia 35 59.9 39.1 1506 AUS
1950 Austria 70 2.8 1.9 218 AUT
1960 Austria 40 4.5 3 324 AUT
1965 Austria 75 13 8.6 322 AUT
1975 Austria 45 42.1 28 455 AUT
1985 Austria 15 22.4 4.2 626 AUT
1990 Austria 50 47.3 23.4 448 AUT
2000 Austria 20 73.2 63.2 465 AUT
2005 Austria 55 55.1 36.2 486 AUT

It also renders a tidy representation with hierarchical columns:

In [14]: table
Out[14]:
  sex     Female          Male          
  smoker  No      Yes     No      Yes  
day                                    
Fri       0.1653  0.2091  0.138   0.1447
Sat       0.148   0.1638  0.1621  0.1391
Sun       0.1657  0.2371  0.1583  0.174
Thur      0.156   0.1631  0.1657  0.1644


sex
smoker
Female
No
Female
Yes
Male
No
Male
Yes
day
Fri 0.1653 0.2091 0.138 0.1447
Sat 0.148 0.1638 0.1621 0.1391
Sun 0.1657 0.2371 0.1583 0.174
Thur 0.156 0.1631 0.1657 0.1644