Pandas 上一行和当前行的平均值-大熊猫

Pandas 上一行和当前行的平均值-大熊猫,pandas,Pandas,目标 df = data[['per_fisc_year', 'consol_net_income_loss', 'tot_asset', 'curr_portion_debt', 'tot_lterm_debt', 'tot_share_holder_equity']] df 计算平均总资产,其中平均总资产=(上一年度资产+本年度资产)/2 计算资产回报率(ROA)=净收入/平均总资产

目标

df = data[['per_fisc_year',
           'consol_net_income_loss',
          'tot_asset',
          'curr_portion_debt',
          'tot_lterm_debt',
           'tot_share_holder_equity']]
df
  • 计算平均总资产,其中平均总资产=(上一年度资产+本年度资产)/2
  • 计算资产回报率(ROA)=
    净收入
    /
    平均总资产
方法

  • 使用Quandl的API获取波音公司的财务信息
  • 创建数据帧
  • 使用Pandas遍历dataframe并计算每年的平均总资产
  • 使用熊猫计算居留权
  • 工作代码

    df = data[['per_fisc_year',
               'consol_net_income_loss',
              'tot_asset',
              'curr_portion_debt',
              'tot_lterm_debt',
               'tot_share_holder_equity']]
    df
    
    输出

    问题

  • 我认为在数据帧中循环并不是最有效/最优雅的方式。我已经研究了groupby或index的使用,但不确定如何执行
  • 类似地,如果我要计算ROA-在计算
    平均总资产
    时,我可以并行计算资产的
    收益
    ,还是必须独立运行

  • 对于第一个问题,请看一看。这将通过以下方式处理您的
    avg_tot_资产

    df['avg_tot_assets'] = df.tot_asset.rolling(window=2).mean() 
    
    至于并行计算另一列,可能有一种方法,但这样做不太可能获得任何性能。按顺序做会更好。像这样:

    df['ROA'] = df.net_income / df.avg_tot_assets
    

    您可以尝试花费大量时间编写一个复杂的函数,该函数将按行遍历数据帧并依次计算每个值,然后将输出应用于原始数据帧,但这将大大低于内置方法

    哇-这太简单了。我曾见过其他人尝试.groupby和.index,但这非常优雅。谢谢你!这个答案救了我的命!