Python 熊猫';9999-12-31';日期时间表示法

Python 熊猫';9999-12-31';日期时间表示法,python,pandas,datetime,Python,Pandas,Datetime,我正在尝试将包含两列日期的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

我正在尝试将包含两列日期的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的纳秒级粒度的结果

我考虑过使用converters参数,但我不确定这是否是一种有效的方法

读取包含高位日期的日期列时,读取sql也会出现读取csv的问题

我已经尝试了
na_values=['9999-12-31']
,这很有效,但我将被迫改变在数据库环境中选择有效记录并计算指示无效记录的字段的方式

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

cust.dtypes

是否可以将datetime类型粒度降级为天、小时、秒,以便读取csv和数据库不需要处理datetime列中的数据?

您只想将日期从转换为天、小时、秒?您可以尝试以下操作:
df=pd.read\u csv(io.StringIO(csv)转换器={'date_to':lambda ds:datetime.strtime(ds,'%Y-%m-%d').date()},sep=',')
但是这使用python日期来存储日期,您可能会遇到后续操作的问题,它们存储为对象,这不如将值存储在numpy数组中那么有效,但至少您可以以这种方式存储日期,如
9999-12-31
[Out]
customer_id             int64
name                   object
surname                object
date_from      datetime64[ns]
date_to                object
dtype: object