title: Efficient column MultiIndex ordering
body: <p>I have this dataframe :</p>
  <pre><code>df = pandas.DataFrame({'A' : [2000, 2000, 2000, 2000, 2000, 2000], 
                         'B' : [&quot;A+&quot;, 'B+', &quot;A+&quot;, &quot;B+&quot;, &quot;A+&quot;, &quot;B+&quot;],
                         'C' : [&quot;M&quot;, &quot;M&quot;, &quot;M&quot;, &quot;F&quot;, &quot;F&quot;, &quot;F&quot;],
                         'D' : [1, 5, 3, 4, 2, 6],
                         'Value' : [11, 12, 13, 14, 15, 16] }).set_index((['A', 'B', 'C', 'D']))
  
  df = df.unstack(['C', 'D']).fillna(0)
  </code></pre>
  <p>And I'm wondering is there is a more elegant way to order the columns MultiIndex that the following code :</p>
  <pre><code># rows ordering
  df = df.sort_values(by = ['A', &quot;B&quot;], ascending = [True, True])
  # col ordering
  df = df.transpose().sort_values(by = [&quot;C&quot;, &quot;D&quot;], ascending = [False, False]).transpose() 
  </code></pre>
  <p>Especially I feel like the last line with the two transpose si far more complex than it should be. I tried using sort_index but wasn't able to use it in a MultiIndex context (for both lines and columns).</p>