У меня есть «страницы» фрейма данных с полем метки времени «Dimension3». Dimension3 должен быть временем ISO, но есть некоторые бессмысленные смещения, вызывающие проблемы.
Фрейм данных - это просмотры страниц веб-сайта посетителями со всего мира, поэтому каждая строка имеет собственную метку времени и смещение часового пояса.
Смещение для времени ISO должно быть в пределах от -12 до +14.
Большинство моих отметок времени попадают в этот диапазон. Вот пример звуковой точки данных:
x = dateutil.parser.parse('2019-11-11T07:08:09.640-4:00')
x
datetime.datetime(2019, 11, 11, 7, 8, 9, 640000, tzinfo=tzoffset(None, -14400))
Вот пример проблемной точки данных, которая появляется в моем фрейме данных:
y = dateutil.parser.parse('2019-11-11T07:08:09.640-31:00')
y
datetime.datetime(2019, 11, 11, 7, 8, 9, 640000, tzinfo=tzoffset(None, -111600))
Проблемный имеет смещение -31, что больше минимальной границы -12.
Это проблематично, потому что, когда я пытаюсь отправить эти данные в базу данных postgres с типом поля timestamptz, я получаю сообщение об ошибке, что данные не удалось загрузить из-за того, что некоторые точки данных вышли за допустимые границы.
Я потратил немного времени на изучение ответов на это сообщение и
pages['dimension3'] = pages['dimension3'].apply(lambda x: x.replace(tzinfo = None))
- person Doug Fir   schedule 15.12.2019utcoffset
в лямбда-выражении и вычислить на его основе новый объектtimezone
(когда не просто повторно использовать ввод, потому что он действителен)? - person Davis Herring   schedule 15.12.2019