#python #pandas
Вопрос:
Следующий код работает нормально, если я указываю даты с числом меньше 2150 года.
Формат даты = ГГГГ-ММ-ДД Входные данные: «2021-07-26″,»2500-04-30″,»2019-04-30»
df = pd.read_csv('files/Test_Excep.csv',
delimiter=",",
parse_dates= ['col1_date','col2_date','col3_dt'],
infer_datetime_format=True)
df.dtypes
col1_date datetime64[ns]
col2_date object
col3_dt datetime64[ns]
col2_date отображается как объект, а не как дата-время. Он отображается как дата, если я использую дату, которая меньше 2150 года, означает любую дату меньше 2150 года.
Пожалуйста, дайте мне знать, есть ли какой-либо обходной путь для этого.
Комментарии:
1. забавная вещь: если я использую простой
datetime
синтаксический анализатор, pandas добавляет time только oncol2_date
, поэтому данные перепроверяются иdateutil
не виноваты2. Я не понял, что вы говорите. Пожалуйста, дайте мне знать, каково решение для обработки col2_date как datetime
3. из datetime импортируйте datetime custom_date_parser = lambda x: datetime.strptime(x, «%Y-%d-%m») date_parser=custom_date_parser — я все еще вижу col2_date как объект, если я использую этот параметр в read_csv
4. Ограничения временных меток «Поскольку pandas представляет временные метки с разрешением в наносекунду, временной интервал, который может быть представлен с использованием 64-разрядного целого числа, ограничен приблизительно 584 годами: 1677-09-21 00:12:43.145224193 — 2262-04-11 23:47:16.854775807» Существуют некоторые рекомендации по представлению диапазонов, выходящих за пределы
5. @mssr: да, именно поэтому мой комментарий начинается с «забавная вещь», а не «это ваше решение».
dateutil
используется ли библиотека для определения форматов дат, и если мы отключаем ее с помощью пользовательского анализатора дат, проблема все еще существует: данные каким-то образом анализируются снова. и, как выяснил Анри-экер, это была скорее проблема с хранилищем, чем с синтаксическим анализом, но информация, которую мы получили с помощью этого теста, по-прежнему верна (и забавна)