gpt4 book ai didi

julia - 在 Julia 中解析 CSV 文件中的日期时间

转载 作者:行者123 更新时间:2023-12-04 03:25:29 24 4
gpt4 key购买 nike

我是 Julia 的新手,所以我只想了解基础知识。
我正在尝试将 CSV 文件读入 DataFrame:

abc = CSV.File("ABC.csv")
格式如下:
2016-01-04T14:16:00Z,103.71,103.71,103.71,103.71,23300
我原以为 Julia 能够识别 ISO8601 时间戳并将其解析为 DateTime ,但它似乎没有这样做。由此产生的 typeofString .
因此,我的问题有两个方面:
  • 如何让 CSV.jl 在导入时解析 DateTime?
  • 如何从字符串实例化 DateTime。
  • 最佳答案

    您需要 Dates标准库。假设您有以下 ABC.csv文件:

    datetime,x,y,z,w,n
    2016-01-04T14:16:00Z,103.71,103.71,103.71,103.71,23300
    您已经知道如何阅读它:
    julia> using CSV

    julia> csv = CSV.File("ABC.csv")
    1-element CSV.File{false}:
    CSV.Row: (datetime = "2016-01-04T14:16:00Z", x = 103.71, y = 103.71, z = 103.71, w = 103.71, n = 23300)
    请注意,您可以使用以下方法访问列:
    julia> csv.datetime
    1-element PooledArrays.PooledVector{String, UInt32, Vector{UInt32}}:
    "2016-01-04T14:16:00Z"
    这种格式并不完全是默认支持的 ISO 格式。您可以使用以下方法将其转换为日期时间对象:
    julia> using Dates

    julia> DateTime(csv.datetime[1], "yyyy-mm-ddTHH:MM:SSZ")
    2016-01-04T14:16:00
    现在我们知道如何转换列的单个条目,我们可以使用 Julia 的广播语法应用于所有条目:
    julia> DateTime.(csv.datetime, "yyyy-mm-ddTHH:MM:SSZ")
    1-element Vector{DateTime}:
    2016-01-04T14:16:00
    然后,您可以将结果列保存在新表中。在 Julia 中,CSV.jl 表与最流行的 DataFrames.jl 表不同。您可以在开始处理管道之前轻松转换为它:
    julia> using DataFrames

    julia> csv |> DataFrame
    1×6 DataFrame
    Row │ datetime x y z w n
    │ String Float64 Float64 Float64 Float64 Int64
    ─────┼─────────────────────────────────────────────────────────────────
    1 │ 2016-01-04T14:16:00Z 103.71 103.71 103.71 103.71 23300
    总之,以下脚本可用于转换数据:
    using DataFrames
    using Dates
    using CSV

    df = CSV.File("ABC.txt") |> DataFrame

    df.datetime = DateTime.(df.datetime, "yyyy-mm-ddTHH:MM:SSZ")
    您可以在文档字符串 ?DateTime 中找到更多信息.
    可能存在替代解决方案,您可以使用 types 通知 CSV.jl 正确的类型。关键字选项。检查文档字符串 ?CSV.File .

    关于julia - 在 Julia 中解析 CSV 文件中的日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67693572/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com