2017-12-22 3 views
3

Ich habe einen Datenrahmen df, der Form:Pandas: Wie konvertiert man einen One-hot-codierten Datenrahmen in eine Adjazenzmatrix?

 Col1 Col2 Col3 
0  0  1  0 
1  1  1  0 
2  0  1  1 
3  1  1  0 

Ich brauche eine neue df der Form:

 Col1 Col2 Col3 
Col1  0  2  0  
Col2  2  0  1 
Col3  0  1  0 

Grundsätzlich sind die Werte, die die Kookkurrenzen zweier darstellen angegebene Spalten für alle Zeilen.

Wie gehe ich vor?

+2

Warum ist 'Col2/Col1' gleich 2? –

+0

Sorry, ich hatte eine Zeile verpasst. Jetzt behoben. – Melsauce

Antwort

3

einfach matrix-multiplication dort nutzen -

In [21]: df_out = df.T.dot(df) 

In [22]: np.fill_diagonal(df_out.values, 0) 

In [23]: df_out 
Out[23]: 
     Col1 Col2 Col3 
Col1  0  2  0 
Col2  2  0  1 
Col3  0  1  0 
+1

Beat mich dazu! –

+0

Großartig, ich versuche, Punkt zu verwenden, aber vergiss das T :-) – Wen

+0

@Wen Yeah Ich habe gesehen, dass du das benutzt hast und war überrascht, dieses Mal nicht von dir zu sehen. – Divakar

Verwandte Themen