Puede darse el caso de que las fechas deban convertirse a una frecuencia diferente. En este caso, sugeriría establecer un índice por fechas.
#set an index by dates
df.set_index(['time'], drop=True, inplace=True)
Después de esto, puede convertir más fácilmente al tipo de formato de fecha que más necesite. A continuación, convierto secuencialmente a varios formatos de fecha, y finalmente termino con un conjunto de fechas diarias al comienzo del mes.
#Convert to daily dates
df.index = pd.DatetimeIndex(data=df.index)
#Convert to monthly dates
df.index = df.index.to_period(freq='M')
#Convert to strings
df.index = df.index.strftime('%Y-%m')
#Convert to daily dates
df.index = pd.DatetimeIndex(data=df.index)
Por brevedad, no muestro que ejecuto el siguiente código después de cada línea anterior:
print(df.index)
print(df.index.dtype)
print(type(df.index))
Esto me da el siguiente resultado:
Index(['2013-01-01', '2013-01-02', '2013-01-03'], dtype='object', name='time')
object
<class 'pandas.core.indexes.base.Index'>
DatetimeIndex(['2013-01-01', '2013-01-02', '2013-01-03'], dtype='datetime64[ns]', name='time', freq=None)
datetime64[ns]
<class 'pandas.core.indexes.datetimes.DatetimeIndex'>
PeriodIndex(['2013-01', '2013-01', '2013-01'], dtype='period[M]', name='time', freq='M')
period[M]
<class 'pandas.core.indexes.period.PeriodIndex'>
Index(['2013-01', '2013-01', '2013-01'], dtype='object')
object
<class 'pandas.core.indexes.base.Index'>
DatetimeIndex(['2013-01-01', '2013-01-01', '2013-01-01'], dtype='datetime64[ns]', freq=None)
datetime64[ns]
<class 'pandas.core.indexes.datetimes.DatetimeIndex'>
df['time'] = [time.date() for time in df['time']]