pythonpandasdatetimeindexingtype-conversion

How to convert string to datetime format in pandas?


I have a column I_DATE of type string (object) in a dataframe called train as show below.

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

How to convert I_DATE from string to datetime format & specify the format of input string.

Also, how to filter rows based on a range of dates in pandas?


Solution

  • Use to_datetime. There is no need to specify the format in this case since the parser is able to figure it out.

    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]
    

    To access the date/day/time component use the dt accessor:

    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
    

    You can use strings to filter as an example:

    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