I am trying to write a function to de deseasonalize any pandas dataframe. This always works, but I still get the "SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame" Is this not the correct way to set a value?
def deseasonalize(df):
# Function to deseasonalize any pandas dataframe
df.loc[df.index.month==1]=df.loc[df.index.month==1]-df.loc[df.index.month==1].mean()
df.loc[df.index.month==2]=df.loc[df.index.month==2]-df.loc[df.index.month==2].mean()
df.loc[df.index.month==3]=df.loc[df.index.month==3]-df.loc[df.index.month==3].mean()
df.loc[df.index.month==4]=df.loc[df.index.month==4]-df.loc[df.index.month==4].mean()
df.loc[df.index.month==5]=df.loc[df.index.month==5]-df.loc[df.index.month==5].mean()
df.loc[df.index.month==6]=df.loc[df.index.month==6]-df.loc[df.index.month==6].mean()
df.loc[df.index.month==7]=df.loc[df.index.month==7]-df.loc[df.index.month==7].mean()
df.loc[df.index.month==8]=df.loc[df.index.month==8]-df.loc[df.index.month==8].mean()
df.loc[df.index.month==9]=df.loc[df.index.month==9]-df.loc[df.index.month==9].mean()
df.loc[df.index.month==10]=df.loc[df.index.month==10]-df.loc[df.index.month==10].mean()
df.loc[df.index.month==11]=df.loc[df.index.month==11]-df.loc[df.index.month==11].mean()
df.loc[df.index.month==12]=df.loc[df.index.month==12]-df.loc[df.index.month==12].mean()
return df