【问题标题】:Running sum in pandas (without loop)在熊猫中运行总和(无循环)
【发布时间】:2012-12-14 12:44: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

所以每个单元格都应该是其自身和所有先前单元格的总和,我应该如何在不使用循环的情况下做到这一点。

【问题讨论】:

  • 提示 - “running sum”的正常名称是“cumulative sum” - 通常缩写为 cumsum - 在文档中快速搜索,你应该很高兴 :)
  • 感谢@JonClements,这就是我搜索的内容。我只是找不到我要搜索的字词。

标签: python pandas


【解决方案1】:

正如@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 上发布一个示例作为问题(也许这是一个错误)github.com/pydata/pandas/…
  • 当然。几小时后就能搞定。
猜你喜欢
  • 2021-06-11
  • 2021-06-30
  • 2021-10-26
  • 2022-07-09
  • 2022-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-18
相关资源
最近更新 更多