为什么不起作用
由于csv文件只能包含字符串、整数和浮点数,因此没有为读取csv设置日期时间数据类型。
将dtype设置为datetime将使pandas将datetime解释为一个对象,这意味着您将以字符串结束。
熊猫解决这个问题的方法
^{}函数有一个名为parse_dates的关键字参数
使用此选项,您可以使用默认的date_parser(dateutil.parser.parser)动态地将字符串、浮点数或整数转换为日期时间headers = ['col1', 'col2', 'col3', 'col4']
dtypes = {'col1': 'str', 'col2': 'str', 'col3': 'str', 'col4': 'float'}
parse_dates = ['col1', 'col2']
pd.read_csv(file, sep='\t', header=None, names=headers, dtype=dtypes, parse_dates=parse_dates)
这将导致pandas将col1和col2读取为字符串,它们很可能是(“2016-05-05”等),并且在读取字符串之后,每个列的date_解析器将作用于该字符串并返回该函数返回的任何内容。
定义自己的日期解析函数:
^{}函数还有一个名为date_parser的关键字参数
将此设置为lambda函数将使该特定函数用于分析日期。
收到警告
你必须给它函数,而不是函数的执行,因此这是正确的date_parser = pd.datetools.to_datetime
这是不正确的:date_parser = pd.datetools.to_datetime()
熊猫0.22更新
pd.datetools.to_datetime已重新定位到date_parser = pd.to_datetime
谢谢@stackoverYC