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

如何从可变长度字符串提取日期时间并拆分到DataFrame不同列?

通用提取日期和时间并拆分列的解决方案

固定位置截取的方式无法适配文本长度变化的问题,改用正则表达式基于格式模式匹配是更可靠的通用方案,它能识别日期、时间的结构规律,不受月份长度、时间位数变化的影响。

优化后的代码

import pandas as pd

text = [
    'FOX News  October 27, 2022 5:00pm-6:00pm PDT',
    'FOX News  April 28, 2022 10:00pm-11:00pm PDT'
]
df = pd.DataFrame(text, columns=['text'])

# 通过正则匹配拆分日期和时间列
df[['date', 'time']] = df['text'].str.extract(r'FOX News  ([A-Za-z]+ \d{1,2}, \d{4}) (\d{1,2}:\d{2}[ap]m-\d{1,2}:\d{2}[ap]m PDT)')

print(df)

代码说明

  • 正则表达式r'FOX News ([A-Za-z]+ \d{1,2}, \d{4}) (\d{1,2}:\d{2}[ap]m-\d{1,2}:\d{2}[ap]m PDT)'的作用:
    • FOX News :匹配文本中的固定前缀(注意原文本里是两个空格)
    • 第一组括号([A-Za-z]+ \d{1,2}, \d{4}):匹配日期部分,适配月份 日期, 年份的格式,支持1/2位日期、任意长度的英文月份
    • 第二组括号(\d{1,2}:\d{2}[ap]m-\d{1,2}:\d{2}[ap]m PDT):匹配完整时间部分,包含时间段和时区,支持1/2位小时数
  • str.extract会自动将匹配到的两组内容分别存入新的date和time列

输出结果

textdatetime
FOX News October 27, 2022 5:00pm-6:00pm PDTOctober 27, 20225:00pm-6:00pm PDT
FOX News April 28, 2022 10:00pm-11:00pm PDTApril 28, 202210:00pm-11:00pm PDT

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 00:10:28