在 pandas 中对多级索引使用 cumsum 方法

using cumsum method on multi level index in pandas

我有以下多级数据框(部分)

                    Px_last FINAL   RETURN  Stock_RES   WANTED 
Stock   Date                    
ALKM    10/27/2016  0.0013    1     -53.85    NaN       -53.85
         1/17/2017  0.0009    1      111.11   NaN        57.26
         1/18/2017  0.0012    1      233.33   NaN       290.60
         1/23/2018  0.0012    1       16.67   NaN       307.26
         1/30/2018  0.0019    1      -42.11   NaN       265.16
ANDI     12/28/2017 0.0017    1      370.59   NaN       370.59
         2/14/2018  0.0324    1      20.00    NaN       390.59
APPZ     9/22/2017  0.0002    1     -50.00    NaN       -50.00
         12/5/2017  0.0001    1    -100.00    NaN      -150.00
         12/6/2017  0.0001    1       0.00    NaN      -150.00

我可以使用以下代码对整个数据帧进行累加和

df3['TTL_SUM'] = df3['RETURN'].cumsum()

但我想要做的是每只股票的累计总和,但是当我执行以下操作时,我得到一列 NaN。有谁知道我在这里做错了什么?查看上面的数据框

df3['Stock_RES'] = df3.groupby(level=0)['RETURN'].sum()

当我将其分配给一个变量时它似乎确实有效,但最终我想在数据框中获取它

RESULTS = df3.groupby(level=0)['RETURN'].sum()

谁能帮帮我。对我来说似乎是相同的代码,所以不确定为什么它不会直接添加到数据框中。

您在 groupby 上下文中使用 sum 而不是 cumsum

df.assign(WANTED1=df.groupby('Stock').RETURN.cumsum())

                  Px_last  FINAL  RETURN  Stock_RES  WANTED  WANTED1
Stock Date                                                          
ALKM  10/27/2016   0.0013      1  -53.85        NaN  -53.85   -53.85
      1/17/2017    0.0009      1  111.11        NaN   57.26    57.26
      1/18/2017    0.0012      1  233.33        NaN  290.60   290.59
      1/23/2018    0.0012      1   16.67        NaN  307.26   307.26
      1/30/2018    0.0019      1  -42.11        NaN  265.16   265.15
ANDI  12/28/2017   0.0017      1  370.59        NaN  370.59   370.59
      2/14/2018    0.0324      1   20.00        NaN  390.59   390.59
APPZ  9/22/2017    0.0002      1  -50.00        NaN  -50.00   -50.00
      12/5/2017    0.0001      1 -100.00        NaN -150.00  -150.00
      12/6/2017    0.0001      1    0.00        NaN -150.00  -150.00