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

在Julia中将String31格式的DataFrame时间列转换为datetime

将DataFrame的String31类型Time列转换为datetime类型

错误原因

你执行的data_raw.Time[1,:]获取的是整个Time列的向量数据(类型为Vector{String31}),而DateTime()单参数调用仅支持解析单个字符串,直接传入向量就会触发类型不匹配的MethodError。

解决方案

以下是几种可行的处理方式:

  • 直接广播解析(最简洁)
    String31是String的子类型,可直接对整列广播DateTime函数完成批量解析:

    using Dates
    # 替换原列
    data_raw.Time = DateTime.(data_raw.Time, "yyyymmdd HHMMSS")
    
  • 使用DataFrames的transform函数(规范操作)
    更符合DataFrame数据处理的习惯,可生成新列或替换原列:

    using DataFrames, Dates
    # 替换原列
    data_raw = transform(data_raw, :Time => (x -> DateTime.(x, "yyyymmdd HHMMSS")) => :Time)
    # 或者更直观的写法
    data_raw[!, :Time] = DateTime.(data_raw[!, :Time], "yyyymmdd HHMMSS")
    
  • 备选:先转普通String再解析
    若担心String31的兼容性,可先转换为普通String类型再解析(一般无需此步骤):

    data_raw.Time = DateTime.(String.(data_raw.Time), "yyyymmdd HHMMSS")
    

注意事项

  • 确认时间字符串格式与"yyyymmdd HHMMSS"完全匹配:比如年份是两位(yy)还是四位(YYYY)、时分秒是否为连续数字(无分隔符),格式不匹配会导致解析失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 05:42:36