0

I am trying to do test to see if a data type is 'datetime.time' and if so convert it to 'datetime.datetime'. My code snippet is below. x_values is a series and each element of the series is a 'datetime.time'.

                ...
                x_values = x.loc[:, "processed_time"]
                print(x_values.dtypes)
                print(type(x_values.iloc[0]))
                print(x_values)
                if isinstance(x_values.iloc[0], datetime.time):
                    x_values = pd.to_datetime(x_values, format='%H:%M:%S')
                ...

But the program errors out at the test with:

Traceback (most recent call last):
  File "/Users/.../risk_calculations.py", line 282, in plot_risk
    if isinstance(x_values.iloc[0], datetime.time):
TypeError: isinstance() arg 2 must be a type or tuple of types
object
<class 'datetime.time'>
1387    00:55:14
1388    10:02:01
1389    10:02:02
1390    10:02:02
1391    10:02:08
          ...   
6417    14:36:49
6418    14:36:51
6419    15:24:52
6420    15:36:59
6422    16:21:03
Name: processed_time, Length: 3621, dtype: object

This Stack answer seemed closest to addressing my challenge but I think I have implemented the suggestion correctly. Note that the print statements show that the type is in fact a 'class datetime.time' as required (I think) by 'is instance' so I don't understand why the errors. I know I can make it work if I replace the 'if' statement with:

if 'datetime.time' in str(type(x_values.iloc[0])):
     ...

But that seems kludgy. Is there a more correct test for an instance of 'datetime.time'?

MikeB2019x
  • 823
  • 8
  • 23
  • https://stackoverflow.com/questions/402504/how-to-determine-a-python-variables-type Hope this helps! – rc.adhikari Oct 22 '19 at 15:25
  • Not really. In my question I posted the Stack answer closest to my question. I have a workaround and I know how to get the type. I want to know why 'isinstance()' is not working as expected or if my workaround is really the only way of checking (specifically) the 'datetime' type. – MikeB2019x Oct 22 '19 at 19:08

0 Answers0