如何将以前的行值和当前行值相加到新列? 我目前的输出:
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"])
答案 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=.. ]