Python 列和行之间的操作同时进行
我有一个计算问题,我知道这可能很简单,但让我头痛 我有一个数据帧,我想生成一个列,其中包含同一行中的一个值和第1行中的一个值的乘法,此外,我想与第1行中的一个值求和,并将其放入实际行中。到目前为止,我有:Python 列和行之间的操作同时进行,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个计算问题,我知道这可能很简单,但让我头痛 我有一个数据帧,我想生成一个列,其中包含同一行中的一个值和第1行中的一个值的乘法,此外,我想与第1行中的一个值求和,并将其放入实际行中。到目前为止,我有: AAPL GLD AAPL_cumu_rtn GLD_cumu_rtn AAPL_Dly_rtn \ Date 2011-01-03 329.570000 138.000000 100.000000 100.
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_invest和GLD_invest列,这两个列是前一行中的AAPL_Dly_rtn乘以AAPL_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.fillna1,然后在其上使用.cumprod。我们将回报标准化,然后简单地乘以初始投资,因此对于黄金而言,这将是一个简单的过程
df['GLD_total'] = (df['GLD_Dly_rtn'] + 1).fillna(1).cumprod() * 350000
此处的fillna部分仅用于填充初始NaN
其结果是:
0 350000.000000
1 341757.150000
2 340793.394837
3 339423.746183
4 338789.702625
也许有一个更简洁或更一般的方法来实现这一点,但我现在想不起来
编辑:
我刚刚意识到,您在数据框中已经有了累积收益列,因此您可以简单地使用:
df['GLD_total']=df['GLD_cumu_rtn']/100*350000哇,没想到!非常感谢你!!!也不知道cumproduct,以后可能会对我有所帮助。非常感谢你!我感谢你的帮助!