Python, как определить, является ли тип 'datetime.time' - PullRequest
0 голосов
/ 22 октября 2019

Я пытаюсь выполнить тест, чтобы определить, является ли тип данных «datetime.time» и, если это так, преобразовать его в «datetime.datetime». Мой фрагмент кода ниже. x_values ​​- это серия, и каждый элемент этой серии - это «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')
                ...

Но при тестировании программа выдает следующие ошибки:

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

Этот стек ответ показался мне наиболее близким к решению моей проблемы, но я думаю, что правильно выполнил это предложение. Обратите внимание, что операторы печати показывают, что тип на самом деле является «классом datetime.time», как требуется (я думаю) «экземпляром», поэтому я не понимаю, почему возникли ошибки. Я знаю, что смогу заставить его работать, если я заменю оператор if на:

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

Но это кажется глупым. Есть ли более правильный тест для экземпляра datetime.time?

...