pandas to_datetime конвертирует ненулевой дополненный месяц и день в дату и время - PullRequest
1 голос
/ 24 июня 2019

Я использую pd.to_datetime для преобразования строк в datetime;

df = pd.DataFrame(data={'id':['DD-83']})
pd.to_datetime(df['id'].str.replace(r'\D+', ''), errors='coerce', format='%d%m')

%d%m определяет заполненные нулями день и месяц, но код все равно преобразует приведенную выше строку в

0   1900-03-08
Name: id, dtype: datetime64[ns]

Мне интересно, как избежать его преобразования в datetime (например, преобразовать в NaT в этом случае), если месяц и день в строке не заполнены нулями. Итак

 DD0306 
 DD0706
 DD-83

преобразуется в

 1900-06-03
 1900-06-07
 NaT 

1 Ответ

1 голос
/ 24 июня 2019

Вам нужно искать - и передавать только строки без -.

Настройка:

df = pd.DataFrame(data={'id':['DD-83', 'DD0706', 'DD0306']})

Код:

df['date'] = pd.to_datetime(df['id'].loc[~df['id'].str.contains('-')].str.replace(r'\D+', ''), errors='coerce', format='%d%m')

Вывод:

       id   date
0   DD-83   NaT
1   DD0706  1900-06-07
2   DD0306  1900-06-03
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...