Apologies for the vague question, please help me make this question more clear apart from answering it.
Below is the pandas.DataFrame that I have "df" and the pandas.DataFrame that I would like "df1".
"df1" has a column "val_6_months_ago" that shows the "val" of an "id" 6 months ago.
from datetime import datetime
import pandas as pd
df = pd.DataFrame({'id': ['a', 'a', 'a', 'b', 'b'],
'val': [1, 2, 3, 4, 5],
'date': [datetime(2019,4,1), datetime(2019,12,1), datetime(2020,1,1), datetime(2018,1,1), datetime(2020,1,1)]})
df1 = pd.DataFrame({'id':['a', 'a', 'a', 'b', 'b'],
'val':[1, 2, 3, 4, 5],
'date':[datetime(2019,4,1), datetime(2019,12,1), datetime(2020,1,1), datetime(2018,1,1), datetime(2020,1,1)],
'val_6_months_ago':[None, 1, 1, None, 4]})