#python #pandas #date-range
Вопрос:
Я пытался исключить набор дат из моего результата pandas bdate_range, но по какой-то причине они продолжают появляться.
Я следил за записями здесь https://pandas.pydata.org/docs/reference/api/pandas.bdate_range.html, т. е. примените bdate_range, а также freq=’C’ . Я думал, что мое исключение из списка было настроено неправильно, но я не вижу никаких ошибок при запуске скрипта.
Пример кода приведен ниже. Кто-нибудь может увидеть, что я сделал не так? предпочел бы, чтобы bdate_range работал вместо того, чтобы использовать какой-то обходной путь
import pandas as pd
import datetime
exclude = [pd.datetime(2020, 1, 7), pd.datetime(2020, 1, 27)]
pd.bdate_range('2020/1/1','2020/1/31',freq='C', holidays=exclude, )
Результат по-прежнему включает 7-е и 27-е число, которые я пытаюсь исключить
DatetimeIndex(['2020-01-01', '2020-01-02', '2020-01-03', '2020-01-06',
'2020-01-07', '2020-01-08', '2020-01-09', '2020-01-10',
'2020-01-13', '2020-01-14', '2020-01-15', '2020-01-16',
'2020-01-17', '2020-01-20', '2020-01-21', '2020-01-22',
'2020-01-23', '2020-01-24', '2020-01-27', '2020-01-28',
'2020-01-29', '2020-01-30', '2020-01-31'],
dtype='datetime64[ns]', freq='C')
Также попробовал использовать с даты и времени, как было предложено, но тот же результат
Комментарии:
1. Я получаю предупреждение о дате и времени, но в моей среде pandas1.2.5 среда Colab pandas1.1.5 и последняя версия 1.3.3 не показывают 7-е и 27-е числа. Какую версию вы используете?
2. спасибо, я только что посмотрел, и у меня есть более старая версия панд. обновится до последней версии и посмотрит, работает ли она
3. только что удалось обновить пакет, и теперь все работает. Спасибо
Ответ №1:
Вы уверены, что выполняете то же самое, чем делитесь с нами здесь? Я только что запустил ваш код, и, похоже, он исключает даты, которые вы упоминаете:
DatetimeIndex(['2020-01-01', '2020-01-02', '2020-01-03', '2020-01-06',
'2020-01-08', '2020-01-09', '2020-01-10', '2020-01-13',
'2020-01-14', '2020-01-15', '2020-01-16', '2020-01-17',
'2020-01-20', '2020-01-21', '2020-01-22', '2020-01-23',
'2020-01-24', '2020-01-28', '2020-01-29', '2020-01-30',
'2020-01-31'],
dtype='datetime64[ns]', freq='C')
В случае, если вы получите предупреждение об устаревании, не используйте pd.datetime
, а импортируйте его из собственной библиотеки, используя from datetime import datetime
.
Комментарии:
1. да, я запускаю его через jupyter/ python 3. отредактировал вопрос, чтобы показать скриншот моего вывода
Ответ №2:
Вместо
import datetime
делать
from datetime import datetime
и вместо
exclude = [pd.datetime(2020, 1, 7), pd.datetime(2020, 1, 27)]
делать
exclude = [datetime(2020, 1, 7), datetime(2020, 1, 27)]
Комментарии:
1. спасибо, попробовал и это, но результат тот же. обновил свой вопрос, чтобы отразить то же самое
2. Скорее всего, у вас устаревшая версия pandas. Я использую версию 1.1.5 (colab), и, похоже, она работает.
3. спасибо, мне нужно было обновить библиотеку, а также изменить код, как вы показали выше, чтобы он работал на моей стороне