Python 3.x 如何编写Python代码,使用groupby为forward 2句点执行cumprod
我想用Python 3.x 如何编写Python代码,使用groupby为forward 2句点执行cumprod,python-3.x,Python 3.x,我想用groupby(id)计算RET,它是两个时段(现在和下一个时段)的累积值 预期结果: 实际结果: 我使用的代码为后续2个期间而不是向前计算cumprod。您需要df.RET.shift(-1)您需要df.RET.shift(-1) df['RET'] = df.groupby('id')['trt1m1'].rolling(2,min_periods=2).apply(lambda x:x.prod()).reset_index(0,drop=True) id datadate
groupby(id)
计算RET,它是两个时段(现在和下一个时段)的累积值
预期结果:
实际结果:
我使用的代码为后续2个期间而不是向前计算cumprod。您需要df.RET.shift(-1)
您需要df.RET.shift(-1)
df['RET'] = df.groupby('id')['trt1m1'].rolling(2,min_periods=2).apply(lambda x:x.prod()).reset_index(0,drop=True)
id datadate trt1m1 RET
1 20051231 1 2
1 20060131 2 6
1 20060228 3 12
1 20060331 4 16
1 20060430 4 20
1 20060531 5 Nan
2 20061031 10 110
2 20061130 11 165
2 20061231 15 300
2 20070131 20 420
2 20070228 21 Nan
id datadate trt1m1 RET
1 20051231 1 Nan
1 20060131 2 2
1 20060228 3 6
1 20060331 4 12
1 20060430 4 16
1 20060531 5 20
2 20061031 10 Nan
2 20061130 11 110
2 20061231 15 165
2 20070131 20 300
2 20070228 21 420