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

从DataFrame字符串列提取时间字段返回NA,求解决方案

问题分析

你之前的正则表达式(\d+)只能匹配连续数字,但目标时间格式12/30/2022 23:20包含斜杠、空格、冒号等非数字字符,导致无法匹配到有效内容,所以返回NA。

解决方案

调整正则表达式,匹配包含数字、斜杠、冒号、空格的完整时间字符串,同时用\s+适配字段后的多个空格:

方法一:灵活匹配时间字符

import pandas as pd

# 构造测试数据
TEST = pd.DataFrame({
    'ID': [1],
    'RESULT': ['Pivot (Triage) Form Entered On:  12/30/2022 23:20 EST    Performed On:  12/30/2022 23:16 EST ']
})

# 提取时间字段
TEST['END_TIME'] = TEST['RESULT'].str.extract(r"Entered On:\s+([\d/: ]+) EST")
TEST['START_TIME'] = TEST['RESULT'].str.extract(r"Performed On:\s+([\d/: ]+) EST")

# 去除时间字符串两端冗余空格(可选)
TEST['END_TIME'] = TEST['END_TIME'].str.strip()
TEST['START_TIME'] = TEST['START_TIME'].str.strip()

# 保留目标列
TEST = TEST[['ID', 'END_TIME', 'START_TIME']]
print(TEST)

方法二:精准匹配时间格式

如果需要严格匹配MM/DD/YYYY HH:MM格式,可用更精确的正则:

TEST['END_TIME'] = TEST['RESULT'].str.extract(r"Entered On:\s+(\d{2}/\d{2}/\d{4} \d{2}:\d{2}) EST")
TEST['START_TIME'] = TEST['RESULT'].str.extract(r"Performed On:\s+(\d{2}/\d{2}/\d{4} \d{2}:\d{2}) EST")

关键正则说明

  • \s+:匹配一个或多个空格,避免因原字符串空格数不一致导致匹配失败
  • [\d/: ]+:匹配数字、斜杠、冒号、空格组成的时间字符串
  • \d{2}/\d{2}/\d{4} \d{2}:\d{2}:精准匹配两位数字/两位数字/四位数字 两位数字:两位数字的时间格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 19:15:31