Без указания формата, pd.to_datetime
должен угадать из данных, как должна интерпретироваться строка даты.С параметрами по умолчанию это не работает для второй и третьей строки ваших данных:
In [5]: date_of_hire = pd.Series(['18.01.2018 0:00:00',
'01.02.2018 0:00:00',
'06.11.2018 0:00:00'])
In [6]: pd.to_datetime(date_of_hire)
Out[6]:
0 2018-01-18
1 2018-01-02
2 2018-06-11
dtype: datetime64[ns]
Самое быстрое решение было бы передать dayfirst=True
:
In [7]: pd.to_datetime(date_of_hire, dayfirst=True)
Out[7]:
0 2018-01-18
1 2018-02-01
2 2018-11-06
dtype: datetime64[ns]
Если вы знаете полный форматиз ваших данных, можете указать это напрямую.Это работает только в том случае, если формат точно , как указано, если в строке, например, не хватает времени, преобразование не удастся.
In [8]: pd.to_datetime(date_of_hire, format='%d.%m.%Y %H:%M:%S')
Out[8]:
0 2018-01-18
1 2018-02-01
2 2018-11-06
dtype: datetime64[ns]
В случае, если у вас мало информации о формате датыза исключением того, что он является непротиворечивым, pandas может заранее выводить формат из данных:
In [9]: pd.to_datetime(date_of_hire, infer_datetime_format=True)
Out[9]:
0 2018-01-18
1 2018-02-01
2 2018-11-06
dtype: datetime64[ns]