在 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
我有以下多级数据框(部分)
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