2017-04-24 77 views
0

目的平均先前和当前行 - 熊猫

  • 计算avg_tot_assets其中avg_tot_assets =(现有年资产+当前年资产)/ 2
  • 计算return_on_asset(ROA)= net income/avg_total_assets

APPROACH

  1. 使用Quandl的API提取波音公司财务信息
  2. 创建数据帧
  3. 使用熊猫通过数据帧迭代并计算每年的平均总资产
  4. 用熊猫来计算ROA

工作代码

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

输出

dataframe

质询

  1. 我想通过数据帧的循环是不是最有效的/优雅的方式。我研究过使用groupby或index,但我不确定如何执行。
  2. 同样,如果我要计算ROA - 我可以并行计算return_on_asset,同时计算avg_tot_asset,还是这些必须独立运行?

回答

1

对于第一个问题,请看Pandas Window Functions。这将处理您avg_tot_assets有:

df['avg_tot_assets'] = df.tot_asset.rolling(window=2).mean() 

至于计算并行另一列,有可能是一个办法,但你不可能通过这样做来获得任何性能。你会更好地按顺序进行。像这样:

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

你可以尝试浪费写一个复杂的函数,将通过数据帧逐行和计算反过来然后将输出到原始数据帧的每个值很多时间,但这会是DRASTICALLY比内置方法慢。

+1

哇 - 这是令人难以置信的简单化。我曾见过其他人尝试.groupby和.index,但这非常优雅。这次真是万分感谢! – jonplaca