You need two things, ensure the date column is of dates (rather of strings) and to set the index to these dates.
You can do this in one go using to_datetime
:
In [11]: df.index = pd.to_datetime(df.pop('date'))
In [12]: df
Out[12]:
avg high low qty
date
2013-05-27 16.92 19.00 1.22 71151
2013-05-30 14.84 19.00 1.22 42939
2013-06-02 9.19 17.20 1.23 5607
2013-06-05 23.63 5000.00 1.22 5850
2013-06-10 13.82 19.36 1.22 5644
2013-06-15 17.76 24.00 2.02 16969
Then you can call emwa
as expected:
In [13]: pd.ewma(df["avg"], span=60, freq="D")
Out[13]:
date
2013-05-27 16.920000
2013-05-28 16.920000
2013-05-29 16.920000
2013-05-30 15.862667
2013-05-31 15.862667
2013-06-01 15.862667
2013-06-02 13.563899
2013-06-03 13.563899
2013-06-04 13.563899
2013-06-05 16.207625
2013-06-06 16.207625
2013-06-07 16.207625
2013-06-08 16.207625
2013-06-09 16.207625
2013-06-10 15.697743
2013-06-11 15.697743
2013-06-12 15.697743
2013-06-13 15.697743
2013-06-14 15.697743
2013-06-15 16.070721
Freq: D, dtype: float64
and if you set this as a column:
In [14]: df['ewma'] = pd.ewma(df["avg"], span=60, freq="D")
In [15]: df
Out[15]:
avg high low qty ewma
date
2013-05-27 16.92 19.00 1.22 71151 16.920000
2013-05-30 14.84 19.00 1.22 42939 15.862667
2013-06-02 9.19 17.20 1.23 5607 13.563899
2013-06-05 23.63 5000.00 1.22 5850 16.207625
2013-06-10 13.82 19.36 1.22 5644 15.697743
2013-06-15 17.76 24.00 2.02 16969 16.070721