Apollo
Apollo

Reputation: 9064

Converting String to datetime Python

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

Answers (2)

Piotr Nawrot
Piotr Nawrot

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

Lily Mara
Lily Mara

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

Related Questions