如何解析熊猫时间戳,其中毫秒字段不是零填充



我有一个pandas数据帧,其中的时间戳列格式为字符串。时间变量具有微秒级精度,但没有零填充。以下是时间戳的一些示例值。

2015-05-12 05:25:23.904 UTC
2015-05-12 05:55:10.496544 UTC
2015-05-18 15:10:44.295 UTC

我想解析此列并设置日期时间格式。我在其他stackoverflow线程中尝试了以下选项,但都不起作用。

input_data['event_timestamp'] = pd.to_datetime(input_data['event_timestamp'], format="%Y-%m-%d %H:%M:%S.%-f %z")
ValueError: '-' is a bad directive in format '%Y-%m-%d %H:%M:%S.%-f %z'
input_data['event_timestamp'] = pd.to_datetime(input_data['event_timestamp'], format="%Y-%m-%d %H:%M:%S.%f %z")
ValueError: time data '2015-05-12 05:25:23.904 UTC' does not match format '%Y-%m-%d %H:%M:%S.%f %z' (match)

如何将此变量解析为时间戳格式?

通过填充"000"将毫秒转换为微秒:

>>> pd.to_datetime(df.event_timestamp.str.replace(r'(.d{3}) (w+)', r'g<1>000 2', regex=True))
0   2015-05-12 05:25:23.904000+00:00
1   2015-05-12 05:55:10.496544+00:00
2   2015-05-18 15:10:44.295000+00:00
Name: event_timestamp, dtype: datetime64[ns, UTC]

来自python文档:

\g使用相应的组号;\g<2>因此等价于\2,但在替换中并不含糊,例如\g<2>0.\20将被解释为对组20的引用,而不是对后面跟着文字字符"0"的组2的引用。反向引用\g<0>在RE匹配的整个子串中进行替换。

最新更新