【问题标题】:Capitalising Research & Development Expenses with a Pandas df使用 Pandas df 将研发费用资本化
【发布时间】:2020-03-31 18:11:59
【问题描述】:

我正在为我的论文做一个项目,该项目与我拥有的一组公司的研发 (R&D) 费用的资本化有关。

对于那些不熟悉财务术语的人,我试图通过每个时间段的衰减(或“折旧”)来将每年的研发费用与以下费用相加。

例如,如果我们以 20% 的恒定折旧率计算 5 年的苹果研发费用:

year  r&d_exp  dep_rate  r&d_capital

1999    10       0.2          10   
2000    8        0.2          16 
2001    12       0.2        24.4 
2002    7        0.2        25.4 
2003    15       0.2          33  

如果不清楚,r&d_capital 将通过以下方式检索:

2000 = 10*(1-0.2) + 8

2001 = 10*(1-0.4) + 8*(1-0.2) + 12

2002 = 10*(1-0.6) + 8*(1-0.4) + 12*(1-0.2) + 7

2003 = 10*(1-0.8) + 8*(1-0.6) + 12*(1-0.4) + 7*(1-0.2) + 15

如何在 pandas 数据框中自动执行此计算? 还考虑到我的数据框中有超过 1 家公司。

提前感谢您的帮助:)

【问题讨论】:

  • 你用的是什么python版本,2.7还是3? - 上面的例子也是你的预期输出吗?如果您有多家公司,您可以添加一列来说明该示例吗?
  • 折扣系数每年相加而不是相乘是否正常?
  • 到底是什么问题?如果您不知道如何使用 Pandas,可以在 pandas.pydata.org/docs 找到文档。请参阅How to Askhelp center

标签: python pandas


【解决方案1】:

我确信有更好的方法可以做到这一点,但是使用 for 循环和索引您可以适当地添加 'r&d_exp''dep_rate'

import pandas as pd
import numpy as np

df = pd.DataFrame(((1999, 10, 0.2, 10),
                   (2000, 8 , 0.2,   16),
                   (2001, 12, 0.2, 24.4),
                   (2002, 7 , 0.2, 25.4),
                   (2003, 15, 0.2,   33)),
                  columns=('year', 'r&d_exp', 'dep_rate', 'r&d_capital'))

我们可以使用索引和列表推导来为每个值求和,直到每年:

# set to zero to show that correct values are recovered
df['r&d_capital'] = 0
print(df['r&d_capital'])
>>> np.array([0, 0, 0, 0, 0])

df['r&d_capital'] = [(df['r&d_exp'].iloc[:i] * (1 - df['dep_rate'].iloc[:i]*np.arange(i)[::-1])).sum()
                     for i in range(1, len(df)+1)]

df['r&d_capital'].values
>>> array([10. , 16. , 24.4, 25.4, 33. ])

我们使用df['r&d_exp'].iloc[:i] 提取直到索引i 的系列,然后使用索引数组np.arange(i)[::-1] 生成相关年份的总折旧率。重要的是,这个数组是颠倒的,这样早期的值就有多个折旧整数。这产生了我假设的价值,即相关年份折旧后的初始投资。然后将所有这些贡献相加得到总资本。此方法已经可以处理不同的折旧率。

原则上,这可以很容易地扩展到其他公司。

我希望这会有所帮助。

【讨论】:

  • 是的,这非常有帮助 :) 谢谢帕迪!
  • 虽然我在与许多公司的面板数据中实施它时遇到了麻烦:P
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-13
  • 2021-10-17
  • 2017-03-30
  • 1970-01-01
  • 2021-12-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多