Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 列和行之间的操作同时进行_Python_Pandas_Dataframe - Fatal编程技术网

Python 列和行之间的操作同时进行

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.

我有一个计算问题,我知道这可能很简单,但让我头痛

我有一个数据帧,我想生成一个列,其中包含同一行中的一个值和第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_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,以后可能会对我有所帮助。非常感谢你!我感谢你的帮助!