Che cosa è un modo efficace per ottenere la diagonale di un quadrato DataFrame
. Mi aspetto che il risultato sia uno Series
con uno MultiIndex
con due livelli, il primo è l'indice dello DataFrame
mentre il secondo livello sono le colonne dello DataFrame
.pandas DataFrame diagonale
Setup
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
)
voglio vedere questo:
print df.stack().loc[[('A', 'a'), ('B', 'b'), ('C', 'c')]]
A a 2
B b 2
C c 3
Mi hai battuto per 'numpy.diag' è una buona soluzione. È necessario passare un mutliindex però? questo non funzionerebbe? 'pd.Series (np.diag (df), index = [df.index, df.columns])' – johnchase
@johnchase in realtà è una soluzione migliore, ho appena deciso di fare letteralmente quello che l'OP chiedeva per – EdChum
@johnchase, per favore invia una risposta. appena eseguito e funziona – piRSquared