title: pandas DataFrame diagonal
body: <p>What is an efficient way to get the diagonal of a square <code>DataFrame</code>.  I would expect the result to be a <code>Series</code> with a <code>MultiIndex</code> with two levels, the first being the index of the <code>DataFrame</code> the second level being the columns of the <code>DataFrame</code>.</p>
  
  <h1>Setup</h1>
  
  <pre><code>import pandas as pd
  import numpy as np
  
  np.random.seed([3, 1415])
  df = pd.DataFrame(np.random.rand(3, 3) * 5,
                    columns = list('abc'),
                    index = list('ABC'),
                    dtype=np.int64
                   )
  </code></pre>
  
  <p>I want to see this:</p>
  
  <pre><code>print df.stack().loc[[('A', 'a'), ('B', 'b'), ('C', 'c')]]
  
  A  a    2
  B  b    2
  C  c    3
  </code></pre>