I want to group column idx then shift column val and keep the last row with idx.
import pandas as pd
df = pd.DataFrame({'idx':['a','a','b','b'],
'val':['a1','a2','b1','b2']})
df
idx val
0 a a1
1 a a2
2 b b1
3 b b2
I tried df['val_shift'] = df.groupby('idx').val.shift(1)
idx val val_shift
0 a a1 NaN
1 a a2 a1
2 b b1 NaN
3 b b2 b1
But I want.
idx val
0 a NaN
1 a a1
2 a a2
3 b NaN
4 b b1
5 b b2
Are there any way to get this?