我有一个计算,我知道可能是简单的麻烦,但让我头痛。你知道吗
我有一个pandas数据帧,我想生成一个列,包含乘法,一个值在同一行,一个值在第1行,此外,我想和一个值在第1行,并把它放在实际行。到目前为止,我有:
AAPL GLD AAPL_cumu_rtn GLD_cumu_rtn AAPL_Dly_rtn \
Date
2011-01-03 329.570000 138.000000 100.000000 100.000000 NaN
2011-01-04 331.290012 134.750000 100.521896 97.644928 0.005219
2011-01-05 334.000008 134.369995 101.344178 97.369562 0.008180
2011-01-06 333.729988 133.830002 101.262247 96.978262 -0.000808
2011-01-07 336.120003 133.580002 101.987439 96.797103 0.007162
GLD_Dly_rtn AAPL_invest GLD_invest
2011-01-03 NaN 650000.0 350000.0
2011-01-04 -0.023551 0.0 0.0
2011-01-05 -0.002820 0.0 0.0
2011-01-06 -0.004019 0.0 0.0
2011-01-07 -0.001868 0.0 0.0
我想填写APPL\u invest和GLD\u invest列,这两个列是用前一行中的AAPL\u Dly\u rtn乘以AAPL\u invest并与自身求和,依此类推。。。你知道吗
AAPL GLD AAPL_cumu_rtn GLD_cumu_rtn AAPL_Dly_rtn \
Date
2011-01-03 329.570000 138.000000 100.000000 100.000000 NaN
2011-01-04 331.290012 134.750000 100.521896 97.644928 0.005219
2011-01-05 334.000008 134.369995 101.344178 97.369562 0.008180
2011-01-06 333.729988 133.830002 101.262247 96.978262 -0.000808
2011-01-07 336.120003 133.580002 101.987439 96.797103 0.007162
GLD_Dly_rtn AAPL_invest GLD_invest
2011-01-03 NaN 650000.0 350000.0
2011-01-04 -0.023551 653392.3 341757.1
2011-01-05 -0.002820 658737.1 340793.3
2011-01-06 -0.004019 0.0 0.0
2011-01-07 -0.001868 0.0 0.0
如果有人对我如何不使用for循环就可以做到这一点有任何想法,我将非常感激!你知道吗
非常感谢!!!!你知道吗
我认为这可以通过
.cumprod
来实现。你知道吗例如,如果我们取
(df['GLD_Dly_rtn'] + 1).fillna(1)
,然后对它使用.cumprod()
。我们将回报率标准化,然后简单地乘以初始投资,因此对于黄金来说,这就是。你知道吗这里的fillna部分只是用来填充开头的NaN。你知道吗
结果是:
可能有一个更整洁或更普遍的方法来做到这一点,但我现在想不起来
编辑:
我刚刚意识到,您已经在数据帧中有了累计返回列,因此您可以简单地使用:
df['GLD_total'] = (df['GLD_cumu_rtn'] / 100) * 350000
相关问题 更多 >
编程相关推荐