Python pandas to_datetime将非零填充的月和日转换为datetime
我正在使用Python pandas to_datetime将非零填充的月和日转换为datetime,python,python-3.x,pandas,datetime,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] 我想知道如果字符串中的月份和日期
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填充的,如何避免将其转换为datetime(例如,在本例中转换为NaT
)。所以
DD0306
DD0706
DD-83
将转换为
1900-06-03
1900-06-07
NaT
您需要查找
-
,只传递不带-
的字符串
设置:
df = pd.DataFrame(data={'id':['DD-83', 'DD0706', 'DD0306']})
代码:
输出:
id date
0 DD-83 NaT
1 DD0706 1900-06-07
2 DD0306 1900-06-03
检查我建议使用
df['id'].str.replace(r'\D+','-')
,然后使用format='%D-%m'
,这样就有了明确的区别。它为-83
返回NaT
,但其他有效字符串,如DD0306
,DD0706
也转换为NaT
我用df=pd.DataFrame(data={id':['DD-83']}
,to_datetime(to_datetime(df['id'].loc['id'].str.contains(''))尝试了该代码。str.str.str.str.str.replace(r'\D+',''),errors='improve',format='%D%m'),errors='improve',format='%D-%m',expert\u datetime\u format=True)
但返回的是一个空序列,而不是NaT
@daiyue,请参阅完整编辑的答案。我还附加了安装程序。
id date
0 DD-83 NaT
1 DD0706 1900-06-07
2 DD0306 1900-06-03