Как преобразовать строку в формат datetime в pandas python?

У меня есть столбец I_DATE типа строка (объект) в кадре данных с именем train, как показано ниже.

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

Как преобразовать I_DATE из строки в формат datatime и указать формат входной строки. Я видел некоторые ответы на это, но это не для формата AM/PM.

Кроме того, как фильтровать строки по диапазону дат в пандах?

Ответ 1

Используйте to_datetime, нет необходимости в строках формата, для которых парсер/мужчина достаточно для его обработки:

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]

Для доступа к компоненту date/day/time используйте 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

Вы можете использовать строки для фильтрации в качестве примера:

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

Ответ 2

хотя вы можете написать код несколькими способами... над этим было действительно легко работать.