Sum of previous rows values

Question:

how I can sum previous rows values and current row value to a new column?
My current output:

index,value
0,1
1,2
2,3
3,4
4,5

My goal output is:

index,value,sum
0,1,1
1,2,3
2,3,6
3,4,10
4,5,15

I know that this is easy to do with Excel, but I’m looking solution to do with pandas.

My code:

import random, pandas

recordlist=[1,2,3,4,5]

df=pandas.DataFrame(recordlist, columns=["Values"])
Asked By: Juho M

||

Answers:

use cumsum

df.assign(sum=df.value.cumsum())

       value  sum
index            
0          1    1
1          2    3
2          3    6
3          4   10
4          5   15

Or

df['sum'] = df.value.cumsum()
df

       value  sum
index            
0          1    1
1          2    3
2          3    6
3          4   10
4          5   15

If df is a series

pd.DataFrame(dict(value=df, sum=df.cumsum())
Answered By: piRSquared

As already used in the previous posts, df.assign is a great function.

If you want to have a little bit more flexibility here, you can use a lambda function, like so

df.assign[ sum=lambda l: l['index'] + l['value'] ]

Just to do the summing, this could even be shortened with

df.assign[ sum=df['index'] + df['value'] ]

Note that sum (before the = sign) is not a function or variable, but the name for the new column. So this could be also df.assign[ mylongersumlabel=.. ]

Answered By: matthaeus
Categories: questions Tags: , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.