【问题标题】:Pandas dataframe - running sum with resetPandas 数据框 - 运行总和并重置
【发布时间】:2015-12-29 15:47:20
【问题描述】:

我想计算给定列中的运行总和(当然不使用循环)。需要注意的是,我有另一列指定何时将运行总和重置为该行中存在的值。最好用下面的例子来解释:

   reset  val   desired_col
0      0    1   1
1      0    5   6
2      0    4   10
3      1    2   2
4      1   -1   -1
5      0    6   5
6      0    4   9
7      1    2   2

desired_col是我要计算的值。

【问题讨论】:

    标签: python pandas dataframe multiple-columns cumsum


    【解决方案1】:

    你可以使用2次cumsum()

    #   reset  val  desired_col
    #0      0    1            1
    #1      0    5            6
    #2      0    4           10
    #3      1    2            2
    #4      1   -1           -1
    #5      0    6            5
    #6      0    4            9
    #7      1    2            2
    df['cumsum'] = df['reset'].cumsum()
    #cumulative sums of groups to column des
    df['des']= df.groupby(['cumsum'])['val'].cumsum()
    print df
    #   reset  val  desired_col  cumsum  des
    #0      0    1            1       0    1
    #1      0    5            6       0    6
    #2      0    4           10       0   10
    #3      1    2            2       1    2
    #4      1   -1           -1       2   -1
    #5      0    6            5       2    5
    #6      0    4            9       2    9
    #7      1    2            2       3    2
    #remove columns desired_col and cumsum
    df = df.drop(['desired_col', 'cumsum'], axis=1)
    print df
    #   reset  val  des
    #0      0    1    1
    #1      0    5    6
    #2      0    4   10
    #3      1    2    2
    #4      1   -1   -1
    #5      0    6    5
    #6      0    4    9
    #7      1    2    2
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-02
      • 2021-07-24
      • 2020-07-18
      • 2021-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-09
      相关资源
      最近更新 更多