Ваши %y
и %Y
шаблоны в порядке, проблема в том, что вы использовали %mmm
здесь. Все шаблоны методов datetime.strptime()
являются шаблонами из одной буквы , а %mmm
рассматривается как шаблон %m
, за которым следуют два литеральных символа m
. %m
соответствует числовому месяцу (1 или 2 цифры, заполнение нулями необязательно). Так что 19-1mm-19
будет соответствовать, а 19-Jan-19
- нет, потому что месяц не числовой и два буквальных символа m
отсутствуют.
Правильный шаблон для использования здесь '%d-%b-%y'
, где %b
соответствует сокращенному названию месяца.
Демо-версия:
>>> import datetime
>>> df = ['19-Jan-19', '4-Jan-19']
>>> [datetime.datetime.strptime(x,'%d-%b-%y').strftime('%Y-%m-%d') for x in df]
['2019-01-19', '2019-01-04']