考虑到年差,Pandas面板数据滞后变量

2024-05-14 14:48:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在处理大量的财务信息面板数据,但是这些数据值有点参差不齐。我试图实现的是延迟数据帧的某些变量,以便时间t-1的值与时间t的值对齐

通常,为了滞后变量,我会使用df.groupby('tic')['investments'].shift(),但是这显然会给出错误的答案,因为df中可能缺少的年份可能会导致错误的时间滞后。为了给您一个想法,df如下所示(仅举一个例子):

       datadate    fyear    ticker    tot_a    debt
0    31/12/1998     1998      AAPL   188.92   32.44
1    31/12/1999     1999      AAPL   197.44   56.09
2    31/12/2002     2002      AAPL   268.13   89.72
3    31/12/2003     2003      AAPL   278.06   96.32
4    31/12/2004     2004      AAPL   288.35   94.21
5    31/12/2005     2005      AAPL   312.23   84.21
6    31/05/2008     2008      TSLA    45.67    2.56
7    31/05/2009     2009      TSLA    38.29    2.90
8    31/05/2010     2010      TSLA    42.89    4.89
9    31/05/2011     2011      TSLA    56.03    3.78
10   31/05/2014     2014      TSLA   103.45   12.33
..       ...            ..       ..        

我所寻找的是一段代码,它允许我理解(对于每个公司)数据中是否存在差距,如果没有差距,则将指定变量滞后于t-1,如果存在差距,则插入NaN。就这样,

       datadate    fyear    ticker    tot_a    debt
0    31/12/1998     1998      AAPL      NaN     NaN
1    31/12/1999     1999      AAPL    188.92  32.44
2    31/12/2002     2002      AAPL      NaN     NaN
3    31/12/2003     2003      AAPL    268.13  89.72
4    31/12/2004     2004      AAPL    278.06  96.32
5    31/12/2005     2005      AAPL    288.35  94.21
6    31/05/2008     2008      TSLA       NaN    NaN
7    31/05/2009     2009      TSLA     45.67   2.56
8    31/05/2010     2010      TSLA     38.29   2.90
9    31/05/2011     2011      TSLA     42.89   4.89
10   31/05/2014     2014      TSLA      NaN     NaN
..       ...            ..       ..        

我希望这些问题有意义

提前谢谢大家:)


Tags: 数据信息df错误时间nan财务ticker
1条回答
网友
1楼 · 发布于 2024-05-14 14:48:16
for i in range(1, len(df)):
if (df.loc[i, 'ticker']==df.loc[i-1, 'ticker']) & (df.loc[i, 'fyear']==df.loc[i-1, 'fyear']+1):
    df.loc[i, 'tot_a_1'] = df.loc[i-1, 'tot_a']
else:
    df.loc[i, 'tot_a_1'] = None

这是我的密码

相关问题 更多 >

    热门问题