在pandas中进行累积求和(无需循环)

18

我想在pandas数据框中建立一个累加和。我的数据框类似于:

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

每个单元格都应该是它自己和所有前面单元格的总和,那么我如何在不使用循环的情况下实现这一点。


7
提示:“running sum”的常见名称是“累加和”,通常缩写为cumsum。在文档中快速搜索,即可轻松找到所需信息 :) - Jon Clements
1
谢谢@JonClements,那正是我在寻找的。我只是找不到我要搜索的术语。 - leo
(略相关):https://dev59.com/-GjWa4cB1Zd3GeqPpVCV - codeape
1个回答

30

正如@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() - Lokesh A. R.
@user1815357 非常奇怪!您介意在 GitHub 上发布一个问题示例(也许是个 bug)https://github.com/pydata/pandas/issues?direction=desc&sort=updated&state=open - Andy Hayden
好的,我会在几个小时内完成翻译。 - Lokesh A. R.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接