У меня есть два следующих массива datetimes:
dateA:
datesA
array([datetime.datetime(2000, 1, 4, 0, 0),
datetime.datetime(2000, 1, 5, 0, 0),
datetime.datetime(2000, 1, 6, 0, 0),
datetime.datetime(2000, 1, 7, 0, 0),
datetime.datetime(2000, 1, 8, 0, 0),
datetime.datetime(2000, 1, 9, 0, 0),
datetime.datetime(2000, 1, 10, 0, 0),
datetime.datetime(2000, 1, 11, 0, 0),
datetime.datetime(2000, 1, 12, 0, 0)], dtype=object)
И даты B:
datesB
array([datetime.datetime(2000, 1, 4, 0, 0, tzinfo=<UTC>),
datetime.datetime(2000, 1, 5, 0, 0, tzinfo=<UTC>),
datetime.datetime(2000, 1, 6, 0, 0, tzinfo=<UTC>),
datetime.datetime(2000, 1, 7, 0, 0, tzinfo=<UTC>),
datetime.datetime(2000, 1, 10, 0, 0, tzinfo=<UTC>),
datetime.datetime(2000, 1, 11, 0, 0, tzinfo=<UTC>),
datetime.datetime(2000, 1, 12, 0, 0, tzinfo=<UTC>),
datetime.datetime(2000, 1, 13, 0, 0, tzinfo=<UTC>),
datetime.datetime(2000, 1, 14, 0, 0, tzinfo=<UTC>)], dtype=object)
Я хочу найти даты в датахA, которые НЕ в датах. Использование ~isin()
, как показано ниже, возвращает True для всех строк, а не только строк, отсутствующих в dateB:
datesA_not_in_datesB = ~np.isin(datesA,datesB)
datesA_not_in_datesB.reshape(-1,1)
array([[ True],
[ True],
[ True],
[ True],
[ True],
[ True],
[ True],
[ True],
[ True]])
dateA, строки 4 и 5 ( datetime.datetime (2000, 1, 8, 0, 0) и datetime.datetime (2000, 1, 9, 0, 0) ) являются единственными записями, которые не указаны в dateB и должны возвращать True .
Я обнаружил, что эта проблема isin()
не работает для дат, о которых сообщается в этих сообщениях:
Исправление, которое кто-то предлагает в постах выше:
datesA_not_in_datesB = ~np.isin(datesA.astype('datetime64[ns]'),datesB.astype('datetime64[ns]'))
C:\Users\Username\anaconda3\lib\site-packages\ipykernel_launcher.py:1: DeprecationWarning: parsing timezone aware datetimes is deprecated; this will raise an error in the future
"""Entry point for launching an IPython kernel.
datesA_not_in_datesB.reshape(-1,1)
array([[False],
[False],
[False],
[False],
[ True],
[ True],
[False],
[False],
[False]])
Это работает, кроме как я получаю предупреждающее сообщение:
DeprecationWarning: синтаксический анализ datetime с учетом timezone устарел; в будущем это вызовет ошибку "" "Точка входа для запуска ядра I Python.
Я попытался несколько вещей, чтобы удалить информацию о часовом поясе .replace(tzinfo=None)
из dateB, чтобы сделать isnan работать без необходимости использовать .astype('datetime64[ns]')
и найти решение без DeprecationWarning , но безрезультатно.
Может ли кто-нибудь посоветовать, как получить тот же результат, что и
datesA_not_in_datesB = ~np.isin(datesA.astype('datetime64[ns]'),datesB.astype('datetime64[ns]'))
но так, чтобы это не привело к предупреждению об устаревании ?
Большое спасибо за ваше время и помощь в этом.