How to get previous row value after a shift compare?

I now have a dataframe like this, the desired outcome is what I trying to get.

enter image description here

If I wanna get the daily price difference, which is "price - estimate_price". But the "estimate_price" here should be yesterday's estimate_price. For example, for id a, if I wanna get "price difference" for 11/2/20, It should be "11/2/20's price - 11/1/20's estimate_price", which is " 7-7 = 0 ".

I have tried using this code to match the day, the match is successful, but the "estimate_price" here is from the current row, not the previous row value, is there any way that I can get the previous row value after I complete a shift compare?

df['price'] - df[df['done_date'].eq((df['estimate_date'] + pd.Timedelta(days =1).shift())]['estimate_price']

Thanks in advance for any help!