I am having a problem trying to implement the 'rolling' functions in Pandas (i.e. rolling_std() and rolling_corr()) when using the group by functions. I have tried using the below formulas but I keep getting 'ValueError: cannot reindex from a duplicate axis'.
df
is my dataframe:
df.groupby(level='ID')['Val1'].apply(lambda x: pd.rolling_std(x,30))
What I have:
ID Date Val1 Val2
A 1-Jan 45 22
A 2-Jan 15 66
A 3-Jan 55 13
B 1-Jan 41 12
B 2-Jan 87 45
B 3-Jan 82 66
C 1-Jan 33 34
C 2-Jan 15 67
C 3-Jan 46 22
What I need:
ID Date Val1 Val2 Rolling_Corr Rolling_Std (Val1)
A 1-Jan 45 22
A 2-Jan 15 66 0.1 1.2
A 3-Jan 55 13 0.16 2.5
B 1-Jan 41 12
B 2-Jan 87 45 0.15 2.8
B 3-Jan 82 66 0.05 1.1
C 1-Jan 33 34
C 2-Jan 15 67 0.09 1.5
C 3-Jan 46 22 0.11 2.4
Thanks