¿Cómo convertir una cadena a un formato de fecha y hora en pandas python?

Tengo una columna I_DATE de tipo cadena (objeto) en un dataframe llamado tren como se muestra a continuación.

I_DATE 28-03-2012 2:15:00 PM 28-03-2012 2:17:28 PM 28-03-2012 2:50:50 PM 

Cómo convertir I_DATE de cadena a formato de fecha y hora y especificar el formato de la cadena de entrada. Vi algunas respuestas a esto pero no es para el formato AM / PM.

Además, ¿cómo filtrar filas en función de un rango de fechas en pandas?

Use to_datetime , no hay necesidad de una cadena de formato que el analizador sea lo suficientemente hombre / mujer para manejarlo:

 In [51]: pd.to_datetime(df['I_DATE']) Out[51]: 0 2012-03-28 14:15:00 1 2012-03-28 14:17:28 2 2012-03-28 14:50:50 Name: I_DATE, dtype: datetime64[ns] 

Para acceder al componente fecha / día / hora, use el acceso dt :

 In [54]: df['I_DATE'].dt.date Out[54]: 0 2012-03-28 1 2012-03-28 2 2012-03-28 dtype: object In [56]: df['I_DATE'].dt.time Out[56]: 0 14:15:00 1 14:17:28 2 14:50:50 dtype: object 

Puedes usar cadenas para filtrar como ejemplo:

 In [59]: df = pd.DataFrame({'date':pd.date_range(start = dt.datetime(2015,1,1), end = dt.datetime.now())}) df[(df['date'] > '2015-02-04') & (df['date'] < '2015-02-10')] Out[59]: date 35 2015-02-05 36 2015-02-06 37 2015-02-07 38 2015-02-08 39 2015-02-09