我有一个日期数组,应该在2021年9月至2022年9月之间。如何检查每个日期是否都在该范围内?
例如以下是阵列中的一些日期
calendar202109['date'].dt.date.unique()
array([datetime.date(2021, 9, 16), datetime.date(2021, 9, 17),
datetime.date(2021, 9, 18), datetime.date(2021, 9, 19),
datetime.date(2022, 9, 15)], dtype=object)
您可以直接使用numpy:
a = array([datetime.date(2021, 9, 16), datetime.date(2021, 9, 17),
datetime.date(2021, 9, 18), datetime.date(2021, 9, 19),
datetime.date(2022, 9, 15)], dtype=object)
((a > pd.Timestamp('2021-09-01')) & (a < pd.Timestamp('2022-08-31'))).all()
输出:False
识别异常值:
m = ((a > datetime.date(2021, 9, 1)) & (a < pd.Timestamp('2022-08-31')))
a[~m]
输出:array([datetime.date(2022, 9, 15)], dtype=object)
注意。在这里使用pd.Timestamp('2021-09-01')
是为了方便,您可以使用datetime.date(2021, 9, 1)
如果没有熊猫的帮助,你就可以做到这一点:
from datetime import date
list_ = [date(2021, 9, 16),
date(2021, 9, 17),
date(2021, 9, 18),
date(2021, 9, 19),
date(2022, 9, 15)]
lo_bound = date(2021, 9, 1)
hi_bound = date(2022, 8, 31)
for d in list_:
if not lo_bound <= d <= hi_bound:
print(d, 'Out of range')
输出:
2022-09-15 Out of range