首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Panel Data Research & Development资本化

Panel Data Research & Development资本化
EN

Stack Overflow用户
提问于 2020-04-02 21:57:45
回答 1查看 49关注 0票数 1

我正在处理一个面板数据,其中包含许多公司多年来的研发费用。

我想要做的是将这些费用资本化,就像它们是资产一样。对于那些不熟悉金融术语的人,我试图通过每段时间按相应的折旧率递减(或“折旧”)每一年的R&D费用的价值,将每年的R&D费用累加到以下几个值中。

数据帧如下所示:

代码语言:javascript
运行
复制
           fyear      tic      rd_tot     rd_dep 
0          1979      AMFD       1.345      0.200
1          1980      AMFD       0.789      0.200
..          ..        ..          ..         ..
211339     2017       ACA       3.567      0.340
211340     2018       ACA       2.990      0.340
211341     2018      CTRM       0.054      0.234

其中fyear是会计年度,tic是公司特定的字母代码,rd_tot是该年度的总研发支出,rd_dep是适用的折旧率。

到目前为止,我想出了这个:

代码语言:javascript
运行
复制
df['r&d_capital'] = [(df['rd_tot'].iloc[:i] * (1 - df['rd_dep'].iloc[:i]*np.arange(i)[::-1])).sum()for i in range(1, len(df)+1)]

然而,问题是代码只运行了整个列,而没有考虑到研发费用需要以公司(或tic)特定的方式进行资本化。我也尝试过使用.groupby('tic),但它不起作用。

因此,我试图寻求帮助来解决这个问题,这样我就可以按公司特定的方式获得每年的研发费用资本化。

非常感谢您的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-03 02:52:31

此解决方案将初始数据帧分解为单独的数据帧(每个“tic”组一个),并在每个df上应用研发资本计算公式。最后,我们使用pd.concat重建数据帧。

代码语言:javascript
运行
复制
tic_dfs = [tic_group for _, tic_group in df.groupby('tic')]

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


result=pd.concat([df for df in tic_dfs]).sort_index()

注意:"_"是组名称的掩码,例如"ACA","AMFD“等,而tic_group是实际的数据体。

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

https://stackoverflow.com/questions/60993305

复制
相关文章

相似问题

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