Was ist ein effizienter Weg, um die Diagonale eines Quadrats DataFrame
zu erhalten. Ich würde erwarten, dass das Ergebnis ein Series
mit einem MultiIndex
mit zwei Ebenen ist, der erste ist der Index der DataFrame
die zweite Ebene ist die Spalten der DataFrame
.pandas DataFrame diagonal
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
)
Ich möchte, dies sehen:
print df.stack().loc[[('A', 'a'), ('B', 'b'), ('C', 'c')]]
A a 2
B b 2
C c 3
Sie schlagen mich zu ihr 'numpy.diag' ist eine gute Lösung. Ist es notwendig, einen Mutliindex zu übergeben? würde das nicht funktionieren? 'pd.Series (np.diag (df), index = [df.index, df.columns])' – johnchase
@johnchase eigentlich, das ist eine bessere Lösung, habe ich gerade beschlossen, buchstäblich zu tun, was das OP gebeten – EdChum
@johnchase bitte einreichen Eine Antwort damit. lief es einfach und funktioniert – piRSquared