如何.cmprod()两个不同的pd.系列



问题

  • 从下面的例子中,我是否可以基于cum_series_acum_series_b计算cum_series_c

示例

import pandas as pd
# I don't have these two pd.Series (a and b) in my pocket.
# In other words, I cannot make use of these two pd.Series.
series_a = pd.Series([1,1.03,1.02,0.98,0.99])
series_b = pd.Series([1,0.98,0.95,1.05,1.07])
# I am given these two cumprod series, cum_series_a and cum_series_b
# I know what these varibles look like. 
cum_series_a = series_a.cumprod()
cum_series_b = series_b.cumprod()
cum_series_a
>> 0    1.000000
1    1.030000
2    1.050600
3    1.029588
4    1.019292 
cum_series_b
>> 0    1.000000
1    0.980000
2    0.931000
3    0.977550
4    1.045979
#######################################################################################
# What I want to calculate is the cum_series_c based on cum_series_a and cum_series_b #
#######################################################################################
series_c = pd.concat([series_a, series_b[1:]]) 
cum_series_c = series_c.cumprod()
### Attention, please!
# I don't need the first element of the series_b, because it is 1.
# So it would repeat the same number 1.019292 two times, if I didn't delete it.
cum_series_c
>>> 0    1.000000
1    1.030000
2    1.050600
3    1.029588
4    1.019292
1    0.998906
2    0.948961
3    0.996409
4    1.066158
  • 换句话说,是否可以在不知道series_aseries_b但只知道cum_series_acum_series_b的情况下计算cum_series_c
  • 这样做的代码是什么样的

是的,您可以将所有cum_series_b乘以cum_series_a的最后一个元素

cum_series_c = cum_series_a.append(cum_series_b * cum_series_a.values[-1], ignore_index = True)

相关内容

  • 没有找到相关文章