2016-10-26 9 views
3

Ich versuche, den Zeitraum über Zeitraum Wachstum Wert für jede eindeutige Gruppe, gruppiert nach Unternehmen, Gruppe und Datum zu finden.Pandas groupby mit pct_change

Company Group Date  Value 
A  X  2015-01 1 
A  X  2015-02 2 
A  X  2015-03 1.5 
A  XX 2015-01 1 
A  XX 2015-02 1.5 
A  XX 2015-03 0.75 
A  XX 2015-04 1 
B  Y  2015-01 1 
B  Y  2015-02 1.5 
B  Y  2015-03 2 
B  Y  2015-04 3 
B  YY 2015-01 2 
B  YY 2015-02 2.5 
B  YY 2015-03 3 

Ich habe versucht:

df.groupby(['Date','Company','Group']).pct_change() 

aber diese gibt alle NaN.

Das Ergebnis ich suche ist:

Company Group Date  Value/People 
A  X  2015-01 NaN 
A  X  2015-02 1.0 
A  X  2015-03 -0.25 
A  XX 2015-01 NaN 
A  XX 2015-02 0.5 
A  XX 2015-03 -0.5 
A  XX 2015-04 0.33 
B  Y  2015-01 NaN 
B  Y  2015-02 0.5 
B  Y  2015-03 0.33 
B  Y  2015-04 0.5 
B  YY 2015-01 NaN 
B  YY 2015-02 0.25 
B  YY 2015-03 0.2 

Antwort

3

Sie Ihr Datum in den Zeilenindex und Gruppen/Unternehmen in die Spalten erhalten möchten

d1 = df.set_index(['Date', 'Company', 'Group']).Value.unstack(['Company', 'Group']) 
d1 

enter image description here

dann Verwenden Sie pct_change

d1.pct_change() 

enter image description here

OR

mit groupby

df['pct'] = df.sort_values('Date').groupby(['Company', 'Group']).Value.pct_change() 
df 

enter image description here