Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.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 3.x 如何从每日收益中计算价格?_Python 3.x_Pandas_Dataframe - Fatal编程技术网

Python 3.x 如何从每日收益中计算价格?

Python 3.x 如何从每日收益中计算价格?,python-3.x,pandas,dataframe,Python 3.x,Pandas,Dataframe,我有一个每日返回的数据框。我想添加另一列,其中包含基于每日回报计算的价格序列。 这是数据帧: date daily 0 2020-09-01 0.0000 1 2020-09-02 0.0012 2 2020-09-03 -0.0005 3 2020-09-04 -0.0004 4 2020-09-07 0.0032 5 2020-09-08 -0.0015 6 2020-09-09 0.0005 7 2020-09-10 0.0003 8 20

我有一个每日返回的数据框。我想添加另一列,其中包含基于每日回报计算的价格序列。 这是数据帧:

         date   daily
0  2020-09-01  0.0000
1  2020-09-02  0.0012
2  2020-09-03 -0.0005
3  2020-09-04 -0.0004
4  2020-09-07  0.0032
5  2020-09-08 -0.0015
6  2020-09-09  0.0005
7  2020-09-10  0.0003
8  2020-09-11  0.0001
9  2020-09-14  0.0043
10 2020-09-15  0.0037
11 2020-09-16 -0.0008
这是我想添加的价格栏:

       prices
0   100.000000
1   100.120000
2   100.069940
3   100.029912
4   100.350008
5   100.199483
6   100.249582
7   100.279657
8   100.289685
9   100.720931
10  101.093598
11  101.012724
我尝试在“daily”列上循环,然后计算价格,但我没有将新值保留到列表prz中

prz= []

for row in df['daily']:
        prz.append(100 *(1+row))

首先添加
1
,然后使用并最后乘以
100
,以将第一个
NaN
替换为
0

df['prices'] = df['daily'].add(1).cumprod().mul(100)

df['back'] = df['prices'].pct_change().fillna(0)
print (df)
          date   daily      prices    back
0   2020-09-01  0.0000  100.000000  0.0000
1   2020-09-02  0.0012  100.120000  0.0012
2   2020-09-03 -0.0005  100.069940 -0.0005
3   2020-09-04 -0.0004  100.029912 -0.0004
4   2020-09-07  0.0032  100.350008  0.0032
5   2020-09-08 -0.0015  100.199483 -0.0015
6   2020-09-09  0.0005  100.249582  0.0005
7   2020-09-10  0.0003  100.279657  0.0003
8   2020-09-11  0.0001  100.289685  0.0001
9   2020-09-14  0.0043  100.720931  0.0043
10  2020-09-15  0.0037  101.093598  0.0037
11  2020-09-16 -0.0008  101.012724 -0.0008
您也可以在此处使用:


@Ig_Ferr的答案对你有用吗?
In [1349]: import numpy as np

In [1350]: df['prices'] = np.cumproduct(df.daily + 1) * 100

In [1351]: df
Out[1351]: 
          date   daily      prices
0   2020-09-01  0.0000  100.000000
1   2020-09-02  0.0012  100.120000
2   2020-09-03 -0.0005  100.069940
3   2020-09-04 -0.0004  100.029912
4   2020-09-07  0.0032  100.350008
5   2020-09-08 -0.0015  100.199483
6   2020-09-09  0.0005  100.249582
7   2020-09-10  0.0003  100.279657
8   2020-09-11  0.0001  100.289685
9   2020-09-14  0.0043  100.720931
10  2020-09-15  0.0037  101.093598
11  2020-09-16 -0.0008  101.012724