pandas DataFrame Diagonale
Was ist ein effizienter Weg, um die Diagonale eines Quadrats DataFrame
. Ich würde erwarten, dass das Ergebnis ein Series
mit einem MultiIndex
mit zwei Ebenen, die erste ist die index der DataFrame
der zweiten Ebene werden die Spalten der DataFrame
.
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
)
Das will ich sehen:
print df.stack().loc[[('A', 'a'), ('B', 'b'), ('C', 'c')]]
A a 2
B b 2
C c 3
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn es Ihnen nichts ausmacht mit numpy, die Sie nutzen könnten
numpy.diag
Könnte man etwas wie das hier tun:
np.diag
geben Sie die diagonalen Werte als die np-array, können Sie dann bauen die multiindex zippen und die index-und Spalten auf und übergeben dieser als der gewünschte index in derDataFrame
en.Eigentlich die komplexe multiindex generation braucht nicht so kompliziert zu sein:
Aber johnchase Antwort ist ordentlicher
numpy.diag
ist eine gute Lösung. Ist es notwendig zum bestehen einer mutliindex obwohl? würde dies nicht funktionieren?pd.Series(np.diag(df), index=[df.index, df.columns])
Können Sie auch
iat
in einer Liste Verständnis, um die Diagonale.