2016-03-21 12 views
0

Wie kann ich Pandas oder Python-Code schreiben, um eine Matrix aus meinen Daten zu erhalten? Ich habe die folgende Tabelle:Matrix aus Daten mit Pandas oder Python holen

Item Route Order 
R124 A1 1 
R124 A2 2 
R124 A3 3 
R124 A4 4 
R124 A4 4 
R126 A5 1 
R126 A6 2 
R126 A7 3 
R126 A7 3 

Meine erforderlich Ausgabe lautet:

A1 A2 A3 A4 A5 A6 A7 
R124 1 1 1 2 0 0 0 
R126 0 0 0 0 1 1 2 

die Matrix zu erhalten, ein einzigartiger 'Item' Wert wird zu einem Zeilenname. Zum Beispiel hat R124 in der Spalte 'Reihenfolge' je einen Eintrag in der Spalte 'Reihenfolge', in der Spalte 'Route' in A1, A2 und A3, und in der Spalte 'Route' in 2 Einträge in A4. Die Anzahl der gemappten Einträge wird entsprechend aufgezeichnet. Da in R124 für 'A5', 'A6' und 'A7' keine Zuordnung 'Auftrag' zur Spalte 'Route' existiert, werden Nullen aufgezeichnet, wie in der Ausgangsmatrix gezeigt.

Antwort

1

Sie brauchen nur pivot_table.

Wenn Ihr Datenrahmen df ist:

df.pivot_table(index="Item",columns="Route",values="Order",aggfunc='count') 

gibt:

Route A1 A2 A3 A4 A5 A6 A7 
Item          
R124 1.0 1.0 1.0 2.0 NaN NaN NaN 
R126 NaN NaN NaN NaN 1.0 1.0 2.0 

und vollständig die gewünschte Antwort zu imitieren nur hinzufügen fillna und astype:

df.pivot_table(index="Item",columns="Route",values="Order",aggfunc='count').fillna(0).astype(int) 

gibt

Route A1 A2 A3 A4 A5 A6 A7 
Item        
R124 1 1 1 2 0 0 0 
R126 0 0 0 0 1 1 2 
+0

Ausgezeichnet !. Genau das, was ich wollte. Danke @tvashtar – user27976

Verwandte Themen