Я работаю с большой панелью данных финансовой информации, однако значения немного нестабильны. Я пытаюсь добиться отставания определенных переменных моего фрейма данных, чтобы значения в момент времени 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
.. ... .. ..
Я надеюсь, что вопросы имеют смысл!
Заранее спасибо, ребята :)