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

如何用Pandas转换含缺失字段的特殊时间字符串为datetime格式?

处理缺失字段的时间字符串转datetime对象的方法

对于存在字段缺失的时间字符串(如仅毫秒、秒+毫秒等格式),直接用统一的format参数调用pd.to_datetime会报错,这里提供两种可靠的解决方法:

方法一:补全缺失字段后统一转换

先通过正则表达式提取各时间分量,补全缺失的时、分、秒、毫秒字段,生成格式统一的时间字符串,再用pd.to_datetime转换。

import pandas as pd
import re

data2 = [
    '0',
    '+456ms',
    '+46s456ms',
    '+3m46s456ms'
]
df2 = pd.DataFrame(data2, columns=['ts'])

# 匹配时、分、秒、毫秒的正则模式
pattern = r'\+?(?:(\d+)h)?(?:(\d+)m)?(?:(\d+)s)?(?:(\d+)ms)?'

def complete_time_string(s):
    if s == '0':
        return '+0h0m0s0ms'
    match_result = re.match(pattern, s)
    # 提取各分量,缺失则用0填充
    hour = match_result.group(1) or '0'
    minute = match_result.group(2) or '0'
    second = match_result.group(3) or '0'
    millisecond = match_result.group(4) or '0'
    return f'+{hour}h{minute}m{second}s{millisecond}ms'

# 补全时间字符串
df2['completed_ts'] = df2['ts'].apply(complete_time_string)
# 转换为datetime对象
df2['ts_datetime'] = pd.to_datetime(df2['completed_ts'], format="+%Hh%Mm%Ss%fms")

print(df2)

方法二:转换为时间增量后叠加基准时间

这类时间字符串本质是时间增量,可先将其转换为pd.Timedelta对象,再与一个基准时间(如1900-01-01)相加得到datetime对象,逻辑更直观。

import pandas as pd
import re

data2 = [
    '0',
    '+456ms',
    '+46s456ms',
    '+3m46s456ms'
]
df2 = pd.DataFrame(data2, columns=['ts'])

pattern = r'\+?(?:(\d+)h)?(?:(\d+)m)?(?:(\d+)s)?(?:(\d+)ms)?'

def str_to_timedelta(s):
    if s == '0':
        return pd.Timedelta(0)
    match_result = re.match(pattern, s)
    hour = int(match_result.group(1) or 0)
    minute = int(match_result.group(2) or 0)
    second = int(match_result.group(3) or 0)
    millisecond = int(match_result.group(4) or 0)
    return pd.Timedelta(hours=hour, minutes=minute, seconds=second, milliseconds=millisecond)

# 基准时间,与第一个示例保持一致
base_timestamp = pd.Timestamp('1900-01-01')
# 叠加时间增量得到datetime
df2['ts_datetime'] = base_timestamp + df2['ts'].apply(str_to_timedelta)

print(df2)

两种方法都能得到与完整格式转换一致的结果,方法二更贴合这类时间字符串的增量属性,处理0这类特殊值也更简便。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 10:33:21