Python 大熊猫的条件成熟度

Python 大熊猫的条件成熟度,python,pandas,Python,Pandas,我在熊猫中有以下数据帧 code rank quant sales 123 1 0 2 123 1 12 2 123 1 0 2 123 2 0 1 123 2 10 1 我想按排名对销售分组进行条件求和。如果quant不是零,则

我在熊猫中有以下数据帧

   code     rank    quant       sales
   123      1       0           2
   123      1       12          2
   123      1       0           2
   123      2       0           1
   123      2       10          1
我想按排名对销售分组进行条件求和。如果quant不是零,则将其添加到同一行的累积和中

   code     rank    quant       sales      cumsum
   123      1       0           2          2
   123      1       12          2          16
   123      1       0           2          18
   123      2       0           1          1
   123      2       10          1          12

如何在熊猫身上做到这一点

先添加列,然后与
df['rank']
Series一起使用:

df['cumsum'] = df['quant'].add(df['sales']).groupby(df['rank']).cumsum()
或者对两列使用
sum

df['cumsum'] = df[['quant', 'sales']].sum(axis=1).groupby(df['rank']).cumsum()
另一种方法是在groupby之前创建新列:

df['cumsum'] = (df.assign(cumsum=df['quant'].add(df['sales']))
                  .groupby('rank')['cumsum'].cumsum())

print (df)
   code  rank  quant  sales  cumsum
0   123     1      0      2       2
1   123     1     12      2      16
2   123     1      0      2      18
3   123     2      0      1       1
4   123     2     10      1      12

如果我的groupby和2在一起呢variables@Neil-然后将最后一个解决方案或前2个解决方案与
df['rank']
更改为
[df['code'],df['rank']]