前一行值的总和

时间:2017-04-13 15:58:50

标签: python pandas dataframe

如何将以前的行值和当前行值相加到新列? 我目前的输出:

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

我的目标输出是:

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

我知道这对Excel来说很容易,但我正在寻找与熊猫有关的解决方案。

我的代码:

import random, pandas

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

df=pandas.DataFrame(recordlist, columns=["Values"])

2 个答案:

答案 0 :(得分:6)

使用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

或者

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

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

如果df是一个系列

pd.DataFrame(dict(value=df, sum=df.cumsum())

答案 1 :(得分:0)

df.assign就像以前的文章中已经使用的那样。

如果您想在此处具有更多的灵活性,可以使用lambda函数,就像这样

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

只需进行求和,甚至可以用

来缩短
df.assign[ sum=df['index'] + df['value'] ]

请注意,sum(在=之前)不是函数或变量,而是新列的名称。所以这也可能是df.assign[ mylongersumlabel=.. ]