面板数据研发资本化



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

我想做的是把这些费用当作资产来资本化。对于那些不熟悉金融术语的人来说,我正在努力积累每年R&D按照相应的折旧率,在每个时间段内对其价值进行衰减(或"贬值"(,从而产生以下费用。

数据帧看起来像这样:

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是R&D当年的支出,rd_dep是适用的折旧率。

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

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)]

然而,问题是代码只是贯穿整个列,而没有考虑R&D费用需要以公司(或tic(特定的方式进行资本化。我也尝试过使用.groupby(['tic](,但没有成功。

因此,我正在努力寻求帮助来解决这个问题,这样我就可以获得每年的R&D以公司特定方式进行的费用资本化。

非常感谢你的帮助!

此解决方案将初始数据帧分解为单独的数据帧(每个"tic"组一个(,并应用r&d每个df的资本计算公式。最后,我们使用pd.concat重新构造数据帧。

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是实际的数据体。

最新更新