2017-12-16 2 views
0

Ich habe eine Matrix, Benutzer-item-Matrix, die aus I erzeugen:Pandas von Matrix zu Datenrahmen

matrix = df.pivot(index='user', columns='item', values='rating') 

jede Zeile der Matrix einen Benutzer entsprechen, wobei jede Spalte zu einem Elemente. Geordnete Liste von Benutzern und Elementen wird in zwei Listen gespeichert, sodass das i-te Element der Benutzerliste der ID des i-ten Benutzers in der Zeile der i-ten Matrix entspricht.

Nach einiger Verarbeitung auf dieser Matrix ich nicht herausfinden, wie man wieder in einen Datenrahmen mit Baumstützen (Benutzer, Artikel, Bewertung)

user item rating 
0  1 1907  4.0 
1  1 1028  5.0 
2  1 608  4.0 
3  1 2692  4.0 
4  1 1193  5.0 

Ich kann wechseln wollen. Vorschläge?

+1

Hier ist ein Vorschlag: Ihre Daten veröffentlichen und erwartete Ausgabe. –

+0

Daten + erwartete Ausgabe + Code, den Sie bisher versucht haben. Wenn Sie daran interessiert sind, große Fragen zu stellen, werfen Sie einen Blick hier: [fragen] –

Antwort

1

ein schwenkbarer Datenrahmen dieses Format gegeben -

item 608 1028 1193 1907 2692 
user        
1  4.0 5.0 5.0 4.0 4.0 

Sie können Ihre Daten stack und dann den Index Reset -

df.stack().reset_index(name='rating') 

    user item rating 
0  1 608  4.0 
1  1 1028  5.0 
2  1 1193  5.0 
3  1 1907  4.0 
4  1 2692  4.0 
+0

Ja, es funktioniert gut. Ich erhalten eine df wie folgt aus: level_0 level_1 Bewertung 0 0 0 5,000000 1 0 1 0,000000 2 0 2 0,000000 3 0 3 0,000000 4 0 4 0,000000 Wie level_0 Werte der i-ten zur Karte Wert einer Liste? – Progeny

+0

@Progeny Leider habe ich Ihr Problem nicht vollständig verfolgt. Wenn möglich, öffne eine neue Frage? –

0

können Sie verwenden melt:

df_tab = df.reset_index().melt(id_vars='user',value_name='ratings') 

Ausgang :

user item ratings 
0  1 608  4.0 
1  1 1028  5.0 
2  1 1193  5.0 
3  1 1907  4.0 
4  1 2692  4.0 

und zurück zur Matrix:

matrix = df_tab.pivot(index='user', columns='item', values='ratings') 

Ausgang:

item 1028 1193 1907 2692 608 
user        
1  5.0 5.0 4.0 4.0 4.0