将String转换为datetime Python

时间:2014-05-28 13:32:31

标签: python datetime

如果我从2014-05-19文件中读取字符串Python,如何将其转换为csv中的日期时间对象?目前,当我指定dtype = None时,它会将2014-05-19作为字符串读入,而不是日期时间。

import numpy as np
import datetime

np.genfromtxt(inputFile, dtype=None,delimiter=' ')

文件

2014-05-19 10
2014-05-20 11
2014-05-21 12
2014-05-22 13.29
2014-05-23 12.1

其中字符串后面的数字是与日期相关但未包含在datetime对象中的值

dataPoints = np.loadtxt(inputFile, dtype=None,delimiter=' ', converters = {0: datetime.datetime.strptime('%Y-%m-%d')})

我收到以下消息:TypeError: strptime() takes exactly 2 arguments (1 given)

如何在不实际剥离字符串的情况下指定格式?

2 个答案:

答案 0 :(得分:4)

如果您没有丢失值,可以使用numpy.loadtxt()

numpy.genfromtxt()也有转换器参数。 (thx RickyA)

使用'转换器' param和lambda函数:

from datetime import datetime
datestr2num = lambda x: datetime.strptime(x, '%Y-%m-%d')
np.genfromtxt(inputFile, delimiter=' ', converters = {0: datestr2num})

0是列索引。

有更简单的方法 - 使用dtype param:

np.genfromtxt(inputFile, dtype=['datetime64[D]', float], delimiter=' ')

或更多人类可读使用('列名',类型)元组:

np.genfromtxt(inputFile, dtype=[('Date', 'datetime64[D]'),('Value', float)], delimiter=' ')

BTW IMHO 将字符串加载为numpy中的日期时间将是更准确的标题。

答案 1 :(得分:0)

您应该使用datetime模块中的strptime函数。我不确定空格后的数字应该是多少,但这会将年月日正确地格式化为日期时间对象。

from datetime import datetime

some_date = '2014-05-28'
parsed_date = datetime.strptime(some_date, '%Y-%m-%d')

print(parsed_date)