pandas DataFrame diagonal

Qual é uma maneira eficiente de obter a diagonal de um quadradoDataFrame. Eu esperaria que o resultado fosse umSeries com umMultiIndex com dois níveis, o primeiro sendo o índice daDataFrame o segundo nível são as colunas doDataFrame.

Configuração
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
                 )

Eu quero ver isso:

print df.stack().loc[[('A', 'a'), ('B', 'b'), ('C', 'c')]]

A  a    2
B  b    2
C  c    3

questionAnswers(3)

yourAnswerToTheQuestion