The tabulate package includes formatting of pandas dataframes as org-mode tables, except it appears not to do it correctly (-+- separator markup between header row(s) and table body instead of -|-). While that could be relatively easily corrected, tabulate also doesn't do anything in particular for pandas' MultiIndexes either. Here's some code that can display dataframes with simple or MultiIndexes in a relatively pleasing way:
You can download this as a file from my github repo. The call to IPython'spublish_display_data attaches the MIME type 'text/org' to the returned string so that ob-ipython displays it as is. The result is a regular org-mode table and not a table.el one, so the index/header cells of MultiIndexes aren't merged according to the hierarchy but spread out over as many cells as necessary (to remain maximally compatible with org mode):