You can first convert columns from strings to_datetime
and then filter by dates with dt.date
and boolean indexing
:
import pandas as pd
df = pd.DataFrame({'Date 1':['2015-01-04','2015-01-05','2015-01-05'],
'OC_Date':['05-JAN-2015:10:10:20',
'05-JAN-2015:11:15:31',
'05-JAN-2015:08:05:09'],
'Date 2':['2015-01-06','2015-01-08','2015-01-10']})
df['Date 1'] = pd.to_datetime(df['Date 1'])
df['Date 2'] = pd.to_datetime(df['Date 2'])
#http://strftime.org/
df['OC_Date'] = pd.to_datetime(df['OC_Date'], format='%d-%b-%Y:%H:%M:%S')
print (df)
Date 1 Date 2 OC_Date
0 2015-01-04 2015-01-06 2015-01-05 10:10:20
1 2015-01-05 2015-01-08 2015-01-05 11:15:31
2 2015-01-05 2015-01-10 2015-01-05 08:05:09
print (df.dtypes)
Date 1 datetime64[ns]
Date 2 datetime64[ns]
OC_Date datetime64[ns]
dtype: object
mask = (df['Date 1'].dt.date < df['OC_Date'].dt.date) &
(df['OC_Date'].dt.date < df['Date 2'].dt.date)
print (mask)
0 True
1 False
2 False
dtype: bool
print (df[mask])
Date 1 Date 2 OC_Date
0 2015-01-04 2015-01-06 2015-01-05 10:10:20