2016-08-08 12 views
1

vielleicht Frage Name ist nicht korrekt (Entschuldigung dafür, weil ich kein genaues Wort finden, um meine Frage zu beschreiben ...), lassen Sie mich ein Beispiel machen:Pandas Dataframe Spalte mit verschiedenen Zeileninformationen generieren, aber keine Funktion anwenden

Die folgende Datenrahmen ist das Einkommen mit „week_id“ und „user_id“:

week_id user income 
1  1 100 
1  2 50 
2  1 200 
2  2 30 
2  3 150 
3  1 100 
3  2 150 
.... 

ich möchte eine neue Spalte hinzufügen, die „Einkommen“ der vergangenen Woche enthält, wie folgt aussieht:

week_id user income previous_week_income 
1  1 100 0 
1  2 50  0 
2  1 200 100 
2  2 30  50 
2  3 150 0 
3  1 100 200 
3  2 150 30 
.... 

Es sieht so aus, als würde eine neue Spalte mit Informationen aus anderen Zeilen als der aktuellen Zeile generiert.

Ich kenne die Lösung mit der Funktion anwenden, aber wie es Zeile für Zeile ist, scheint es zu langsam für meinen Fall (Herkunft Dataframe kann Dutzende von Millionen Zeilen sein), frage ich andere schnelle Lösung, um das Ergebnis zu bekommen?

Der Hintergrund ist, Faktor für prädiktive Analyse zu generieren, daher möchte ich das Einkommen der vorherigen Woche als eine Variable verwenden, um das aktuelle Wocheneinkommen vorherzusagen.

Vielen Dank im Voraus :)

Antwort

0

ich glaube, Sie DataFrameGroupBy.shift mit fillna benötigen, wenn jeder week_id einzigartige users hat:

df['previous_week_income'] = df.groupby('user')['income'].shift().fillna(0) 
print (df) 
    week_id user income previous_week_income 
0  1  1  100     0.0 
1  1  2  50     0.0 
2  2  1  200     100.0 
3  2  2  30     50.0 
4  2  3  150     0.0 
5  3  1  100     200.0 
6  3  2  150     30.0 
+0

groß, vielen Dank :) – linpingta

+0

Danke. Froh kann dir helfen. – jezrael