Панды '9999-12-31' дата и время представления - PullRequest
1 голос
/ 06 июля 2019

Я пытаюсь прочитать в pandas dataframe файл csv с двумя столбцами, содержащими даты:

customer_id,name,surname,date_from,date_to
1,John,Smith,2010-01-04,2018-09-06
2,Jake,Sarti,2011-09-02,2017-11-03
3,Jim,Sayer,2012-06-12,9999-12-31
4,James,Scheer,2011-09-02,9999-12-31

Хотя date_from - это столбец datetime64 [ns], как и ожидалось, проблема в date_to, похоже, заключается в том, чтодаты «конца света».

Это, очевидно, является следствием наносекундной гранулярности datetime64.

Я думал об использовании параметра конвертеров, но я не уверен, будет ли он эффективнымway.

Проблема с read_csv также возникает с read_sql при чтении столбцов даты, содержащих высокие даты.

Я уже пробовал na_values = ['9999-12-31'], что работает, но я был бы вынужден изменить способ, которым мывыберите действительные записи в нашей среде базы данных и вычислите поля, указывающие на недопустимые записи.

import pandas as pd
cust = pd.read_csv('customers.csv', parse_dates=['date_from', 'date_to'])

cust.dtypes
[Out]
customer_id             int64
name                   object
surname                object
date_from      datetime64[ns]
date_to                object
dtype: object

Можно ли снизить гранулярность типа datetime до дней, часов, .., секунд, чтобы чтение csv и баз данныхне требует манипулирования данными в столбце datetime?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...