2016-11-25 252 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