【问题标题】:Pandas: Cumulative sum of one column based on value of another熊猫:一列的累积和基于另一列的值
【发布时间】:2016-10-21 00:18:46
【问题描述】:

我正在尝试从 pandas 数据框中计算一些统计数据。它看起来像这样:

id     value     conditional
1      10        0
2      20        0
3      30        1
1      15        1
3      5         0
1      10        1

所以,我需要从上到下计算每个idvalue 列的累积总和,但前提是conditional 为1。

所以,这应该给我类似的东西:

id     value     conditional   cumulative sum
1      10        0             0
2      20        0             0
3      30        1             30
1      15        1             15
3      5         0             30
1      10        1             25

所以,只有当conditional=1 在第 4 行和第 6 行且不计算第 1 行值时,才会取 id=1 的总和。我如何在熊猫中做到这一点?

【问题讨论】:

    标签: python pandas cumulative-sum


    【解决方案1】:

    您可以创建一个系列,它是 valueconditional 的乘积,并为每个 id 组取其累积和:

    df['cumsum'] = (df['value']*df['conditional']).groupby(df['id']).cumsum()
    df
    Out: 
       id  value  conditional  cumsum
    0   1     10            0       0
    1   2     20            0       0
    2   3     30            1      30
    3   1     15            1      15
    4   3      5            0      30
    5   1     10            1      25
    

    【讨论】:

      猜你喜欢
      • 2018-02-18
      • 1970-01-01
      • 2019-01-23
      • 2020-09-29
      • 1970-01-01
      • 2013-08-01
      • 1970-01-01
      • 2019-01-09
      • 1970-01-01
      相关资源
      最近更新 更多