如果时间采用2007-08-06T18:11:44.688Z
格式,但如何将毫秒视为2007-08-06T18:11:44Z
,您如何解析时间数据?
pd.to_datetime(x.split('Z')[0], errors='coerce', format='%Y-%m-%dT%H:%M:%S.%f')
删除删除Zulu标记失败,原因是.
有时丢失。
pd.to_datetime(x.split('.')[0], errors='coerce', format='%Y-%m-%dT%H:%M:%S')
有时遗漏, .
删除毫秒失败。
pd.to_datetime(x.split('.|Z')[0], errors='coerce', format='%Y-%m-%dT%H:%M:%S')
有时也会失败,即使它看起来应该在两个案例中分开,因为0成员是我们想要的部分,因此总是在几秒钟内给出有效时间。
答案 0 :(得分:1)
IIUC您只需使用pd.to_datetime(df_column_or_series)
而无需指定format
参数就可以正确解析日期时间格式
是否拥有Zulu
标记,不会更改任何内容 - 在将字符串转换为pandas datetime dtype后,您将拥有相同的dtype:
In [366]: pd.to_datetime(pd.Series(['2007-08-06T18:11:44.688Z'])).dtypes
Out[366]: dtype('<M8[ns]')
In [367]: pd.to_datetime(pd.Series(['2007-08-06T18:11:44.688'])).dtypes
Out[367]: dtype('<M8[ns]')
In [368]: pd.to_datetime(pd.Series(['2007-08-06T18:11:44'])).dtypes
Out[368]: dtype('<M8[ns]')
In [369]: pd.to_datetime(pd.Series(['2007-08-06'])).dtypes
Out[369]: dtype('<M8[ns]')
In [371]: pd.to_datetime(pd.Series(['2007-08-06T18:11:44.688']), format='%Y-%m-%dT%H:%M:%S.%f').dtypes
Out[371]: dtype('<M8[ns]')