How to fill NaN based on the previous row that contains a specific value
You can groupby by 'stock', forward fill missing values with ffill and use its result in fillna. For example:
date       stock   price
22/12/20   MSFT    87
22/12/20   AAPL    99
22/12/20   FCA     81
23/12/20   MSFT    NaN
23/12/20   AAPL    100
23/12/20   FCA     80
24/12/20   MSFT    91
24/12/20   AAPL    NaN 
24/12/20   FCA     NaN

df.fillna(df.groupby('stock').ffill())

Result:
       date stock  price
0  22/12/20  MSFT   87.0
1  22/12/20  AAPL   99.0
2  22/12/20   FCA   81.0
3  23/12/20  MSFT   87.0
4  23/12/20  AAPL  100.0
5  23/12/20   FCA   80.0
6  24/12/20  MSFT   91.0
7  24/12/20  AAPL  100.0
8  24/12/20   FCA   80.0