我有一个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匹配的整个子串中进行替换。