pandas to_datetime将非零填充的月份和日期转换为日期时间

时间:2019-06-24 15:10:09

标签: python python-3.x pandas datetime

我正在使用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]

我想知道如果字符串中的月份和日期未填充0,那么如何避免将其转换为日期时间(例如,在这种情况下转换为NaT)。所以

 DD0306 
 DD0706
 DD-83

将转换为

 1900-06-03
 1900-06-07
 NaT 

1 个答案:

答案 0 :(得分:1)

您需要查找-,仅传递不包含-的字符串。

设置:

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