我想建立一個熊貓數據框的運行總和。我有類似:熊貓運行總和(無循環)
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
所以每一個細胞都應該是自己和以前的所有細胞的總和,我應該怎麼做,而不使用循環。
我想建立一個熊貓數據框的運行總和。我有類似:熊貓運行總和(無循環)
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
所以每一個細胞都應該是自己和以前的所有細胞的總和,我應該怎麼做,而不使用循環。
由於@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
由於某種原因,這不適合我的情況。我必須這樣做:df ['XYX'] = df ['XYZ']。cumsum() –
@ user1815357很奇怪!你介意在github上發佈一個例子作爲問題(也許這是一個bug)https://github.com/pydata/pandas/issues?direction=desc&sort=updated&state=open –
當然。將在幾個小時內完成。 –
在大熊貓被稱爲「擴大」,而不是累積的,我認爲:
http://pandas.pydata.org/pandas-docs/dev/computation.html#expanding-window-moment-functions
無論如何,你可以使用exanding_sum
函數來實現你想要什麼:http://pandas.pydata.org/pandas-docs/dev/generated/pandas.stats.moments.expanding_sum.html
提示 - 正常n 「運行總和」的ame是「累計總和」 - 通常縮寫爲'cumsum' - 在文檔中快速搜索,你應該很好去:) –
謝謝@JonClements,這是我所搜索的。我無法找到我正在尋找的術語。 – leo
(Somewhat)related:http://stackoverflow.com/questions/12370349/reasoning-about-consecutive-data-points-without-using-iteration – codeape