pandas reindexar DataFrame con objetos de fecha y hora

¿Es posible reindexar un DataFrame pandas usando una columna formada por objetos de fecha y hora?

Tengo un DataFrame df con las siguientes columnas:

 Int64Index: 19610 entries, 0 to 19609 Data columns: cntr 19610 non-null values #int datflt 19610 non-null values #float dtstamp 19610 non-null values #datetime object DOYtimestamp 19610 non-null values #float dtypes: int64(1), float64(2), object(1) 

Puedo reindexar el df fácilmente a lo largo de DOYtimestamp con: df.reindex(index=df.dtstamp) y DOYtimestamp tiene los siguientes valores:

 >>> df['DOYtimestamp'].values array([ 153.76252315, 153.76253472, 153.7625463 , ..., 153.98945602, 153.98946759, 153.98947917]) 

pero me gustaría reindexar el dataframe a lo largo de dtstamp que está formado por objetos de fecha y hora para generar diferentes marcas de tiempo directamente desde el índice. La columna dtstamp tiene valores que se parecen a:

  >>> df['dtstamp'].values array([2012-06-02 18:18:02, 2012-06-02 18:18:03, 2012-06-02 18:18:04, ..., 2012-06-02 23:44:49, 2012-06-02 23:44:50, 2012-06-02 23:44:51], dtype=object) 

Cuando bash reindexar df largo de dtstamp obtengo lo siguiente:

 >>> df.reindex(index=df.dtstamp) TypeError: can't compare datetime.datetime to long 

Simplemente no estoy seguro de lo que necesito hacer para que el índice sea de tipo datetime. ¿Alguna idea?

Parece que no quieres reindexar. Algo confusamente reindex no es para definir un nuevo índice, exactamente; más bien, busca filas que tengan los índices especificados. Por lo tanto, si tiene un DataFrame con índice [0, 1, 2] , al hacer una reindex([2, 1, 0]) se devolverán las filas en orden inverso. Hacer algo como reindex([8, 9, 10]) no crea un nuevo índice para las filas; más bien, devolverá un DataFrame con valores de NaN , ya que no hay filas con los índices 8, 9 o 10.

Parece que lo que quieres es mantener las mismas filas, pero crear un índice totalmente nuevo para ellas. Para eso puedes simplemente asignar al índice directamente. Así que intenta hacer df.index = df['dtstamp'] .