【问题标题】:How to make conditional running sums in Pandas?如何在 Pandas 中进行条件运行总和?
【发布时间】:2021-01-17 13:36:43
【问题描述】:

我需要对 Pandas 中的两列进行累积总和。

假设我想总结工人在不同季度的销售额:

df = pd.DataFrame({'Worker': [A, A, B, B, C, C, D, D], 'Quarter': ['Test 1', 'Test 2', 'Test 1', 'Test 2', 'Test 1', 'Test 2', 'Test 1', 'Test 2'], 'Grade': [10,8,7,6,8,10,5,7]})
df

     Worker Quarter   Sales
  0       A      Q1      10
  1       A      Q2       8
  2       B      Q1       7
  3       B      Q2       6
  4       C      Q1       8
  5       C      Q2      10
  6       D      Q1       5
  7       D      Q2       7

给我这样的结果:

     Worker Quarter   Sales
  0       A      Q1      10
  1       A      Q2      18
  2       B      Q1       7
  3       B      Q2      13
  4       C      Q1       8
  5       C      Q2      18
  6       D      Q1       5
  7       D      Q2      12

最快的方法是什么?我正在尝试嵌套 for 循环,但它们非常丑陋,而且在更长的数据库中我担心会丢失一些东西。

【问题讨论】:

    标签: python pandas conditional-statements cumulative-sum


    【解决方案1】:

    你可以把 c​​umsum 和 transform 结合起来:

    df['Sales'] = df.groupby('Worker')['Sales'].transform(pd.Series.cumsum)
    

    输出:

       Worker Quarter   Sales
      0       A      Q1      10
      1       A      Q2       8
      2       B      Q1       7
      3       B      Q2       6
      4       C      Q1       8
      5       C      Q2      10
      6       D      Q1       5
      7       D      Q2       7
    

    【讨论】:

      【解决方案2】:

      试试groupbycumsum

      df['Sales'] = df.groupby('Worker')['Sales'].cumsum()
      

      【讨论】:

        猜你喜欢
        • 2019-08-11
        • 1970-01-01
        • 1970-01-01
        • 2019-06-04
        • 1970-01-01
        • 2019-03-20
        • 1970-01-01
        • 2019-11-28
        • 2019-10-22
        相关资源
        最近更新 更多