Reputation: 9064
How would I convert the string 2014-05-19
to a datetime object in Python
if I'm reading it from a csv
file? Currently when I specify dtype=None, it reads in 2014-05-19
as a string, not a datetime.
import numpy as np
import datetime
np.genfromtxt(inputFile, dtype=None,delimiter=' ')
File
2014-05-19 10
2014-05-20 11
2014-05-21 12
2014-05-22 13.29
2014-05-23 12.1
where the number after the string is a value associated with the date but not included in the datetime
object
dataPoints = np.loadtxt(inputFile, dtype=None,delimiter=' ', converters = {0: datetime.datetime.strptime('%Y-%m-%d')})
I receive the following message: TypeError: strptime() takes exactly 2 arguments (1 given)
how do I specify the format without actually stripping the string?
Upvotes: 1
Views: 14999
Reputation: 445
If you don't have missing values you can use numpy.loadtxt()
.
numpy.genfromtxt()
also has the converters param. (thx RickyA)
Using 'coverters' param and lambda function:
from datetime import datetime
datestr2num = lambda x: datetime.strptime(x, '%Y-%m-%d')
np.genfromtxt(inputFile, delimiter=' ', converters = {0: datestr2num})
Where 0
is column index.
There is simpler way - use dtype param:
np.genfromtxt(inputFile, dtype=['datetime64[D]', float], delimiter=' ')
or more human readable using ('column name', type) tuple:
np.genfromtxt(inputFile, dtype=[('Date', 'datetime64[D]'),('Value', float)], delimiter=' ')
BTW IMHO Load string as datetime in numpy would be more accurate title.
Upvotes: 5
Reputation: 4138
You should use the strptime function from the datetime module. I'm not sure what the numbers after the space should be, but this will format the year-month-day correctly into a datetime object.
from datetime import datetime
some_date = '2014-05-28'
parsed_date = datetime.strptime(some_date, '%Y-%m-%d')
print(parsed_date)
Upvotes: 0