面板数据研发资本化
Panel Data Research & Development Capitalisation
我正在处理一个面板数据,其中包含许多公司多年来的研发费用。
我想做的是将这些费用资本化,就好像它们是资产一样。对于那些不熟悉金融术语的人,我试图通过按相应的折旧率在每个时间段内衰减其价值(或"depreciating"它)来将每年的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 是当年的研发总支出,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)]
然而,问题在于代码只是贯穿了整个专栏,而没有考虑到研发费用需要以公司(或 tic)特定的方式资本化。我也尝试使用 .groupby(['tic]) 但它没有用。
因此,我正在寻求帮助来解决这个问题,以便我可以通过公司特定的方式将每年的研发费用资本化。
非常感谢您的帮助!
此解决方案将初始数据帧分解为单独的数据帧(每个 'tic' 组一个),并对每个 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
是实际的数据体。
我正在处理一个面板数据,其中包含许多公司多年来的研发费用。
我想做的是将这些费用资本化,就好像它们是资产一样。对于那些不熟悉金融术语的人,我试图通过按相应的折旧率在每个时间段内衰减其价值(或"depreciating"它)来将每年的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 是当年的研发总支出,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)]
然而,问题在于代码只是贯穿了整个专栏,而没有考虑到研发费用需要以公司(或 tic)特定的方式资本化。我也尝试使用 .groupby(['tic]) 但它没有用。
因此,我正在寻求帮助来解决这个问题,以便我可以通过公司特定的方式将每年的研发费用资本化。
非常感谢您的帮助!
此解决方案将初始数据帧分解为单独的数据帧(每个 'tic' 组一个),并对每个 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
是实际的数据体。