2015-08-25 3 views
7

У меня есть столбец I_DATE типа string (object) в dataframe, называемый train как показано ниже.Как преобразовать строку в формат datetime в pandas python?

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

Вопросы

  1. Как конвертировать I_DATE из строки в datatime формате & указать формат входной строки. Я видел некоторые ответы на это, но не для формата AM/PM.
  2. Каков формат даты по умолчанию в пандах?
  3. Как принять только datepart или timepart из столбца datetime в пандах?
  4. Как фильтровать строки по диапазону дат в пандах?

Благодаря

+0

1 проблема на вопрос пожалуйста – EdChum

ответ

13

Использования 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] 

Чтобы получить доступ к/использованию даты/дня времени компоненты 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 
+0

Этот аксессор dt является частью панд справа? Мне не нужно импортировать модуль datetime для использования dt? –

+0

Это вы используете обновленную версию панд (я думаю, [0.15.0] (http://pandas.pydata.org/pandas-docs/stable/whatsnew.html#whatsnew-0150-dt) или новее), в приведенном выше коде, где вы видите 'dt.datetime', это подразумевает' #import datetime как dt', но если ваша серия уже является datetime dtype, вы можете выполнить 'df ['col_name']. dt.date' – EdChum