我有一个数据df1
框说,其中有三个包含日期类型数据的字段。给他们打电话'Date 1', 'OC_Date', 'Date 2'
。我想过滤此数据框以获得另一个数据框,以便它为我提供'OC_Date'
介于'Date 1'
和之间的行'Date 2'
:
Date 1 < OC_Date < Date 2
这三个字段中的日期格式如下:
Date 1 : YYYY-MM-DD
OC_Date: DD-MM-YYYY:HH:MM:SS # (MM is text, eg. JAN for January)
Date 2 : YYYY-MM-DD
提前致谢!
您可以先从字符串转换列to_datetime
,然后使用dt.date
和按日期过滤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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句