pandas to_datetime 无法将字符串解析为日期和 return 字符串
pandas to_datetime couldn't parse string into dates and return strings
我有一个 Series
s
作为
10241715000
201709060
11202017
112017
111617
102417
110217
1122018
我尝试了以下代码将 s
转换为 datetime
;
pd.to_datetime(s.str[:7], format='%-m%d%Y', errors='coerce')
但它返回 s
,因为它没有进行任何转换,我期待的是
NaT
NaT
2017-01-20
NaT
NaT
NaT
NaT
2018-01-12
format
是根据strftime
指令定义的,%-m
表示月份为十进制数,例如1; %Y
表示年份为十进制数,例如2018.我想知道这里有什么问题。我正在使用 Pandas 0.22.0
和 Python 3.5
.
更新
data = np.array(['10241715000','201709060','11202017','112017','111617','102417',
'110217','1122018'])
s = pd.Series(data)
pd.to_datetime(s.str[-7:], format='%-m%d%Y', errors='coerce')
0 1715000
1 1709060
2 1202017
3 112017
4 111617
5 102417
6 110217
7 1122018
dtype: object
str
切片
应该是 -7 而不是 7
pd.to_datetime(s.astype(str).str[-7:], format='%m%d%Y', errors='coerce')
Out[189]:
0 NaT
1 NaT
2 2017-01-20
3 2017-01-01
4 NaT
5 NaT
6 NaT
7 2018-11-02
Name: a, dtype: datetime64[ns]
更新
pd.to_datetime(s.str[-7:].str.pad(8,'left','0'), format='%m%d%Y', errors='coerce')
Out[208]:
0 NaT
1 NaT
2 2017-01-20
3 NaT
4 NaT
5 NaT
6 NaT
7 2018-01-12
dtype: datetime64[ns]
我有一个 Series
s
作为
10241715000
201709060
11202017
112017
111617
102417
110217
1122018
我尝试了以下代码将 s
转换为 datetime
;
pd.to_datetime(s.str[:7], format='%-m%d%Y', errors='coerce')
但它返回 s
,因为它没有进行任何转换,我期待的是
NaT
NaT
2017-01-20
NaT
NaT
NaT
NaT
2018-01-12
format
是根据strftime
指令定义的,%-m
表示月份为十进制数,例如1; %Y
表示年份为十进制数,例如2018.我想知道这里有什么问题。我正在使用 Pandas 0.22.0
和 Python 3.5
.
更新
data = np.array(['10241715000','201709060','11202017','112017','111617','102417',
'110217','1122018'])
s = pd.Series(data)
pd.to_datetime(s.str[-7:], format='%-m%d%Y', errors='coerce')
0 1715000
1 1709060
2 1202017
3 112017
4 111617
5 102417
6 110217
7 1122018
dtype: object
str
切片
pd.to_datetime(s.astype(str).str[-7:], format='%m%d%Y', errors='coerce')
Out[189]:
0 NaT
1 NaT
2 2017-01-20
3 2017-01-01
4 NaT
5 NaT
6 NaT
7 2018-11-02
Name: a, dtype: datetime64[ns]
更新
pd.to_datetime(s.str[-7:].str.pad(8,'left','0'), format='%m%d%Y', errors='coerce')
Out[208]:
0 NaT
1 NaT
2 2017-01-20
3 NaT
4 NaT
5 NaT
6 NaT
7 2018-01-12
dtype: datetime64[ns]