如何在 Pandas 中进行条件 运行 求和?

How to make conditional running sums in Pandas?

我需要对 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 循环,但它们非常难看,而且在更长的数据库中我担心会丢失一些东西。

尝试 groupbycumsum

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

您可以将 cumsum 与转换结合使用:

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