Pandas - 使用和不使用毫秒来解析时间数据

时间:2016-08-09 15:46:59

标签: python pandas

如果时间采用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成员是我们想要的部分,因此总是在几秒钟内给出有效时间。

1 个答案:

答案 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]')