2017-11-12 3 views
0

Ich möchte den Year to Date (YTD) -Wert für dieses Jahr berechnen und ihn mit demselben Zeitraum im letzten Jahr in Pandas vergleichen. Meine df sieht wie folgt aus:Jahr bis letztes Jahr letztes Jahr | Pandas

Month Product A Product B 
2015-01-01 24 62 
2015-02-01 46 24 
2015-03-01 30 70 
2015-04-01 26 51 
2015-05-01 34 42 
2015-06-01 45 35 
2015-07-01 25 13 
2015-08-01 98 95 
2015-09-01 6 81 
2015-10-01 93 38 
2015-11-01 98 59 
2015-12-01 98 1 
2016-01-01 67 42 
2016-02-01 72 34 
2016-03-01 7 6 
2016-04-01 19 24 
2016-05-01 82 38 
2016-06-01 15 79 
2016-07-01 49 83 
2016-08-01 97 56 

Die beiden Werte Ich bin nach für Produkt A sind YTD = 408 und YTD SPLY = 328 (Summe Jan-Aug 2016 Summe Jan-Aug 2015). Wenn ein neuer Monat zum df hinzugefügt wird, möchte ich, dass die Formel Jan-Sep berechnet und so weiter.

Irgendwelche Ideen, um fortzufahren?

Antwort

1

Nicht genau, was Sie wollen, aber es sieht so aus, als ob Sie die kumulative Summe für jedes Jahr nehmen möchten.

df[['A_cumsum', 'B_cumsum']] = df.resample('A', on='Month').transform('cumsum') 


     Month Product A Product B A_cumsum B_cumsum 
0 2015-01-01   24   62  24  62 
1 2015-02-01   46   24  70  86 
2 2015-03-01   30   70  100  156 
3 2015-04-01   26   51  126  207 
4 2015-05-01   34   42  160  249 
5 2015-06-01   45   35  205  284 
6 2015-07-01   25   13  230  297 
7 2015-08-01   98   95  328  392 
8 2015-09-01   6   81  334  473 
9 2015-10-01   93   38  427  511 
10 2015-11-01   98   59  525  570 
11 2015-12-01   98   1  623  571 
12 2016-01-01   67   42  67  42 
13 2016-02-01   72   34  139  76 
14 2016-03-01   7   6  146  82 
15 2016-04-01   19   24  165  106 
16 2016-05-01   82   38  247  144 
17 2016-06-01   15   79  262  223 
18 2016-07-01   49   83  311  306 
19 2016-08-01   97   56  408  362 
+0

Ich bekomme die Fehlermeldung "Der Grouper Name Monat wird nicht gefunden", wenn ich dies versuche. Ist der Code anders, wenn die Variable "Monat" der Index im df ist? – Martin598

+0

Wenn der Monat als Index verwendet wird, kann ich einfach den Code "on = 'Month'" löschen. Vielen Dank. – Martin598

Verwandte Themen