2017-12-06 1 views
0

Ich kämpfe um herauszufinden, wie eine quadratische Matrix ein Format wieWie eine quadratische Datenrahmen/Matrix 3 Spalten gegeben erstellen - Python

a a 0 
a b 3 
a c 4 
a d 12 
b a 3 
b b 0 
b c 2 
... 

Um so etwas gegeben zu entwickeln:

a b c d e 
a 0 3 4 12 ... 
b 3 0 2 7 ... 
c 4 3 0 .. . 
d 12 ... 
e . .. 

in Pandas. Ich habe eine Methode entwickelt, von der ich denke, dass sie funktioniert, die aber ewig dauert, weil sie jede Spalte und Zeile für jeden Wert durchlaufen muss, beginnend von Anfang an mit for loops. Ich habe das Gefühl, dass ich das Rad hier definitiv neu erfinde. Dies ist auch nicht realistisch für mein Dataset, wie viele Spalten und Zeilen es gibt. Gibt es etwas Ähnliches wie die Cast-Funktion von R in Python, die das deutlich schneller machen kann?

Antwort

2

Verwendung df.pivot:

import pandas as pd 

df = pd.DataFrame({0: ['a', 'a', 'a', 'a', 'b', 'b', 'b'], 
        1: ['a', 'b', 'c', 'd', 'a', 'b', 'c'], 
        2: [0, 3, 4, 12, 3, 0, 2]}) 

print(df.pivot(index=0, columns=1, values=2)) 

ergibt

1 a b c  d 
0      
a 0.0 3.0 4.0 12.0 
b 3.0 0.0 2.0 NaN 

Hier index=0 erzählt df.pivot die 0 Spalte als Index zu verwenden, und columns=1 erzählt die 1 Spalte als Spaltenindex zu verwenden.

Siehe the docs für mehr auf pivot und andere Umformmethoden.

Verwandte Themen