如果我从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)
如何在不实际剥离字符串的情况下指定格式?
答案 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)