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