Python 在Pandas中的日期列上制作布尔掩码

Python 在Pandas中的日期列上制作布尔掩码,python,pandas,dataframe,date,compare,Python,Pandas,Dataframe,Date,Compare,假设我有一个日期格式不正确的数据框: df = pd.DataFrame(['01-01-1980','2001-03-01','05/22/2020'],columns=['DATE']) 我想将它们与某个日期“06/07/2003”进行比较。对时间戳转换的值执行布尔掩码是一个明显的方法: mask=pd.Timestamp(df['DATE']) < pd.Timestamp('06/07/2003') mask=pd.Timestamp(df['DATE'])

假设我有一个日期格式不正确的数据框:

df = pd.DataFrame(['01-01-1980','2001-03-01','05/22/2020'],columns=['DATE'])
我想将它们与某个日期“06/07/2003”进行比较。对时间戳转换的值执行布尔掩码是一个明显的方法:

mask=pd.Timestamp(df['DATE']) < pd.Timestamp('06/07/2003')
mask=pd.Timestamp(df['DATE'])
但这并没有实现,因为时间戳不理解Series对象。你可以走人行道,但那很难看:

mask=pd.Series([pd.Timestamp(df.loc[x,'DATE']) for x in df['DATE'].index]) < pd.Timestamp('06/07/2003')
mask=pd.Series([pd.Timestamp(df.loc[x,'DATE']),用于df['DATE']索引中的x])

如何简明扼要地做到这一点?

实际上,我在发帖时找到了一个答案——熊猫系列课程中有“应用”功能:

mask=df['DATE'].apply(pd.Timestamp) < pd.Timestamp('06/07/2003')
mask=df['DATE'].apply(pd.Timestamp)
用于转换为日期时间,也可以使用字符串进行比较:

mask = pd.to_datetime(df['DATE']) < '06/07/2003'
print (mask)
0     True
1     True
2    False
Name: DATE, dtype: bool
mask=pd.to_datetime(df['DATE'])<'06/07/2003'
打印(遮罩)
0对
1正确
2错误
名称:日期,数据类型:bool
使用
pd.to_datetime(df['DATE'])
代替
pd.Timestamp