pd.to_datetime
не на месте. У вас в основном это было - просто нужно переназначить столбец после преобразования даты и времени.
>>> import pandas as pd
>>> df = pd.DataFrame(['2009-11-27'], columns = ['my_col'])
>>> df.dtypes['my_col']
dtype('O')
>>> df.my_col = pd.to_datetime(df['my_col'], format='%Y-%m-%d', errors = 'coerce')
>>> df.dtypes['my_col']
dtype('<M8[ns]')
Вы можете использовать это, чтобы проверить, относится ли столбец к определенному типу - dtypes pandas на самом деле являются просто ntypty dtypes.
>>> type(df.my_col.dtype)
<class 'numpy.dtype'>
Вы можете найти список nty-n-типов здесь.
Так что это означает, что вы можете сделать сравнение, как это -
>>> import numpy as np
>>> df.dtypes['my_col'] == np.dtype('<M8[ns]')
True
>>> df.dtypes['my_col'] == np.dtype('<M8[ms]')
False
>>> df.dtypes['my_col'] in [np.dtype('<M8[ns]'), np.dtype('<M8[ms]')]
True