pandas filtering and comparing dates
Using datetime.date(2019, 1, 10)
works because pandas
coerce the date to a date time under the hood.
This however, will no longer be the case in future versions of pandas
.
From version 0.24 and up, it now issue a warning:
FutureWarning: Comparing Series of datetimes with 'datetime.date'. Currently, the 'datetime.date' is coerced to a datetime. In the future pandas will not coerce, and a TypeError will be raised.
The better solution is the one proposed on its official documentation as Pandas
replacement for python datetime.datetime object.
To provide an example referencing OP's initial dataset, this is how you would use it:
import pandas
cond1 = df.newest_date_available < pd.Timestamp(2016,1,10)
df.loc[cond1, ]
I would do a mask like:
a = df[df['newest_date_available'] < date_before]
If date_before = datetime.date(2016, 1, 19)
, this returns:
id code newest_date_available
0 9793708 3514 2015-12-24
1 9792282 2399 2015-12-25
2 9797602 7452 2015-12-25