Here are two ways to solve this, take your pick
df['YEARMODA'] = pd.to_datetime(df['YEARMODA'], format='%Y%m%d')
    YEARMODA  TEMP   MAX   MIN
0 1973-07-01  74.5  90.0  53.6
1 1973-07-02  74.5  88.9  57.9
2 1973-07-03  81.7  95.0  63.0
3 1973-07-04  85.0  95.0  65.8
4 1973-07-05  85.0  97.9  63.9
--------------------------------------------------------------------
from functools import partial
p = partial(pd.to_datetime, format='%Y%m%d')
df['YEARMODA'] = df['YEARMODA'].apply(p)
    YEARMODA  TEMP   MAX   MIN
0 1973-07-01  74.5  90.0  53.6
1 1973-07-02  74.5  88.9  57.9
2 1973-07-03  81.7  95.0  63.0
3 1973-07-04  85.0  95.0  65.8
4 1973-07-05  85.0  97.9  63.9
Edit: The issue you are having is you are not providing the correct format to your pd.to_datetime expression hence it is failing.
Edit 2: To get the std by month according to how you want to do it you would do it as such.
df.groupby(df.YEARMODA.apply(p).dt.strftime('%B')).TEMP.std()
YEARMODA
July    5.321936
Name: TEMP, dtype: float64
df.assign(temp=pd.to_datetime(df['YEARMODA'], format='%Y%m%d') \
  .dt \
  .strftime('%B')) \
  .groupby('temp') \
  .TEMP \
  .std()
temp
July    5.321936
Name: TEMP, dtype: float64