You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Optional包裹的时间字符串转换为datetime并提取目标时间?

解决方法

你的问题出在原始字符串被Optional()包裹,直接用pd.to_datetime无法解析这种非标准格式。需要先剥离外层的包裹结构,再处理时间部分。

步骤1:提取括号内的时间字符串

用正则表达式提取()之间的内容,这是适配该格式最可靠的方式:

df['start_time'] = df['start_time'].str.extract(r'\((.*)\)')[0]

执行后,Optional(2023-12-19 23:11:57 +0000)会被转换成2023-12-19 23:11:57 +0000。

步骤2:转换为datetime类型

此时可以正常使用pd.to_datetime完成转换:

df['start_time'] = pd.to_datetime(df['start_time'])

若仅需要2023-12-19 23:11:57部分

有两种快捷方式:

# 方法1:从datetime对象格式化输出
df['start_time_short'] = df['start_time'].dt.strftime('%Y-%m-%d %H:%M:%S')

# 方法2:直接从提取的字符串截取
df['start_time_short'] = df['start_time'].str.split(' ').str[:2].str.join(' ')

之前尝试失败的原因

  • 直接调用pd.to_datetime(df['start_time']):字符串包含Optional()前缀,不属于标准时间格式,解析器无法识别。
  • 指定format='Optional':format参数要求匹配完整的字符串格式,而非仅前缀,剩余的时间部分无法被转换,因此触发报错。

内容的提问来源于stack exchange,提问作者koshkozhena

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 20:27:25