Like @jonrhsarpe has said in his answer, you can use ast.literal_eval to convert the string to a tuple and then unpack it into the string.
But based on the following tests, it seems like the faster method would still be to use datetime.datetime.strptime(). Example -
Code -
import datetime
import ast
def func1(datestring):
return datetime.datetime(*ast.literal_eval(datestring))
def func2(datestring):
return datetime.datetime.strptime(datestring, '(%Y, %m, %d, %H, %M, %S)')
Timing information -
In [39]: %timeit func1("(2011, 12, 11, 15, 45, 20)")
10000 loops, best of 3: 30.1 µs per loop
In [40]: %timeit func2("(2011, 12, 11, 15, 45, 20)")
10000 loops, best of 3: 26.9 µs per loop
In [41]: %timeit func1("(2011, 12, 11, 15, 45, 20)")
10000 loops, best of 3: 38.6 µs per loop
In [42]: %timeit func2("(2011, 12, 11, 15, 45, 20)")
10000 loops, best of 3: 28.8 µs per loop
In [43]: %timeit func1("(2011, 12, 11, 15, 45, 20)")
10000 loops, best of 3: 31.2 µs per loop
In [44]: %timeit func2("(2011, 12, 11, 15, 45, 20)")
10000 loops, best of 3: 29.5 µs per loop
In [45]: %timeit func1("(2011, 12, 11, 15, 45, 20)")
The slowest run took 5.51 times longer than the fastest. This could mean that an intermediate result is being cached
10000 loops, best of 3: 32.6 µs per loop
In [46]: %timeit func2("(2011, 12, 11, 15, 45, 20)")
The slowest run took 15.42 times longer than the fastest. This could mean that an intermediate result is being cached
10000 loops, best of 3: 27.5 µs per loop
In [47]: %timeit func1("(2011, 12, 11, 15, 45, 20)")
10000 loops, best of 3: 49.2 µs per loop
In [48]: %timeit func2("(2011, 12, 11, 15, 45, 20)")
10000 loops, best of 3: 24.4 µs per loop
Not sure, where you got the information that datetime.datetime.strptime() is counter-intuitive, but I would say for parsing strings to datetime objects, you should use strptime() .
ast.literal_evalthe string to a tuple of integers, then unpack that straight into thedatetimeconstructor:datetime.datetime(*literal_eval(row[1]))pandas? Also wouldn't make sense to store the str in a format that can be more easily parsed?