Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python pandas to_datetime将非零填充的月和日转换为datetime_Python_Python 3.x_Pandas_Datetime - Fatal编程技术网

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