首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >利用Pandas df将研发费用资本化

利用Pandas df将研发费用资本化
EN

Stack Overflow用户
提问于 2020-04-01 02:11:59
回答 1查看 56关注 0票数 1

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

对于那些不熟悉金融术语的人,我试图通过每段时间递减(或“折旧”)以下值来累积每年研发费用的价值。

例如,如果我们有5年的苹果研发费用,折旧率为20%:

代码语言:javascript
复制
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 Dataframe中自动执行此计算?另外,考虑到我的数据框中有多家公司。

提前感谢您的帮助:)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-01 03:10:09

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

代码语言:javascript
复制
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'))

我们可以使用索引和列表理解来计算每个值的总和,直到每年:

代码语言:javascript
复制
# 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]来生成相关年份的总折旧率。重要的是,这个数组颠倒过来,这样前面的值就有多个整数的折旧值。这就产生了我假设的折旧后的初始投资的价值。然后将所有这些贡献相加,得到总资本。这个方法已经可以处理不同的折旧率了。

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

我希望这能帮到你。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60957176

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档