2016-11-25 203 views
1

您好我有一个熊猫框架的工作就像熊猫的积累:没有for循环

1. 1 
2. 2 
3. 3 
4. 4 

和输出是一样的东西

1. 1 
2. 3   
3. 6   
4. 10 

其中每个值是当前值加上最后一个(3 = 1 + 2,6 = 3 + 3,10 = 6 + 4等)。

我可以不用for循环吗?

+0

['pd.DataFrame.cumsum'](http://pandas.pydata.org/pandas-docs /stable/generated/pandas.DataFrame.cumsum.html)是你正在寻找 –

+0

@ M.Klugerford这将做到这一点。谢谢。顺便说一句,对于每个值,cumsum()在此之前总结所有值吗?如果是这样,它可能不是很有效的权利?有没有办法不断更新以前的值并将其添加到当前值? – glhclhy

回答

1

您需要Series.cumsum

print (df) 
    col 
1.0 1 
2.0 2 
3.0 3 
4.0 4 

df['col1'] = df.col.cumsum() 
print (df) 
    col col1 
1.0 1  1 
2.0 2  3 
3.0 3  6 
4.0 4 10 

如果需要覆盖列col

df.col = df.col.cumsum() 
print (df) 
    col 
1.0 1 
2.0 3 
3.0 6 
4.0 10 
+0

谢谢你。 cumsum()将做的伎俩。现在我想知道是否有一种方法可以在计算下一个值时更新每个值,而不是将以前的所有值相加,我只需将其添加到上一次更新的值中即可? – glhclhy

+0

所以输出只有'10'? – jezrael

+0

什么是期望的输出? – jezrael