pandas DataFrame diagonal

¿Cuál es una manera eficiente de obtener la diagonal de un cuadrado?DataFrame. Esperaría que el resultado sea unSeries con unMultiIndex con dos niveles, el primero es el índice de laDataFrame el segundo nivel son las columnas de laDataFrame.

Preparar
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
                 )

Quiero ver esto:

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

A  a    2
B  b    2
C  c    3

Respuestas a la pregunta(3)

Su respuesta a la pregunta