【问题标题】:Pandas Data Frame Dollar Return CalculationPandas Dataframe 美元回报计算
【发布时间】:2021-09-14 15:13:40
【问题描述】:

我真的在为 python 中的一个问题而苦苦挣扎。我正在计算等权重的股票投资组合的美元回报率。我有以下五只股票(SPY、DIS、XLK、BTC 和 ARKK)和投资组合的月度回报,但我在最后一次计算时遇到了问题。

下面的数据框是这样的

  • 平均列只是所有股票的行平均值 返回。)

  • 美元回报是我需要解决的

我有平均列,例如:

Average
-0.038120
-0.078641
0.102472
-0.024291

我的预期输出如下:

Average Dolor_return
-0.038120 .96188
-0.078641 .886237
0.102472 .977051
-0.024291 .953318
  • 美元回报列的数学公式如下。另外,我需要对数据框中的所有行执行这些计算。

    1*(1+(-0.038120)) = 0.96188
    0.96188*(1+(-.078641)) = 0.886237
    0.886237*(1+.102472) = 0.977051
    0.977051*(1+(-.024291)) = 0.953318
    

任何帮助将不胜感激!

【问题讨论】:

    标签: python pandas dataframe for-loop


    【解决方案1】:

    假设您有dataframe,例如:

    dictionary = {'average': [-0.038120,  -0.078641, 0.102472, -0.024291]}
    df = pd.DataFrame(dictionary)
    

    然后,您可以创建function 来计算您的dolor return,例如:

    def calc(df):
        x = 1
        li = []
        for i in range(len(df)):
            if i == 0 :
                dolor_return = (x * 1) * (1 + (df['average'][i]))
                li.append(dolor_return)
            else:
                dolor_returns = (li[i - 1] * 1) * (1 + (df['average'][i]))
                li.append(dolor_returns)
        return li
    

    它将以list 格式返回值,您可以将list 转换为dataframe 格式如下:

    df['dolor_retunrs'] = calc(df)
    

    输出将是:

    Out[1]: 
        average  dolor_retunrs
    0 -0.038120       0.961880
    1 -0.078641       0.886237
    2  0.102472       0.977051
    3 -0.024291       0.953318
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-15
      • 2021-08-05
      • 2021-06-25
      • 2018-10-12
      • 2017-03-01
      • 2019-11-22
      • 1970-01-01
      • 2016-05-23
      相关资源
      最近更新 更多