Calculate and shift returns in dataframe

This post doesnt seem a long way from your previous which had proposed solutions that you didnt to