2012-12-14 109 views
12

我想建立一個熊貓數據框的運行總和。我有類似:熊貓運行總和(無循環)

10/10/2012: 50, 0 
10/11/2012: -10, 90 
10/12/2012: 100, -5 

而且我想獲得:

10/10/2012: 50, 0 
10/11/2012: 40, 90 
10/12/2012: 140, 85 

所以每一個細胞都應該是自己和以前的所有細胞的總和,我應該怎麼做,而不使用循環。

+6

提示 - 正常n 「運行總和」的ame是「累計總和」 - 通常縮寫爲'cumsum' - 在文檔中快速搜索,你應該很好去:) –

+0

謝謝@JonClements,這是我所搜索的。我無法找到我正在尋找的術語。 – leo

+0

(Somewhat)related:http://stackoverflow.com/questions/12370349/reasoning-about-consecutive-data-points-without-using-iteration – codeape

回答

18

由於@JonClements提到,您可以使用cumsum DataFrame方法執行此操作:

from pandas import DataFrame 
df = DataFrame({0: {'10/10/2012': 50, '10/11/2012': -10, '10/12/2012': 100}, 1: {'10/10/2012': 0, '10/11/2012': 90, '10/12/2012': -5}}) 

In [3]: df 
Out[3]: 
       0 1 
10/10/2012 50 0 
10/11/2012 -10 90 
10/12/2012 100 -5 

In [4]: df.cumsum() 
Out[4]: 
       0 1 
10/10/2012 50 0 
10/11/2012 40 90 
10/12/2012 140 85 
+0

由於某種原因,這不適合我的情況。我必須這樣做:df ['XYX'] = df ['XYZ']。cumsum() –

+0

@ user1815357很奇怪!你介意在github上發佈一個例子作爲問題(也許這是一個bug)https://github.com/pydata/pandas/issues?direction=desc&sort=updated&state=open –

+0

當然。將在幾個小時內完成。 –