如何在 Julia 中将字符串系列转换为日期时间系列
How to convert String Series to Datetime Series in Julia
我有一个如下所示的 csv 文件,
20×2 DataFrame
│ Row │ Id │ Date │
│ │ Int64 │ String │
├─────┼───────┼────────────┤
│ 1 │ 1 │ 01-01-2010 │
│ 2 │ 2 │ 02-01-2010 │
│ 3 │ 3 │ 03-01-2010 │
│ 4 │ 4 │ 04-01-2010 │
│ 5 │ 5 │ 05-01-2010 │
│ 6 │ 6 │ 06-01-2010 │
│ 7 │ 7 │ 07-01-2010 │
│ 8 │ 8 │ 08-01-2010 │
│ 9 │ 9 │ 09-01-2010 │
│ 10 │ 10 │ 10-01-2010 │
│ 11 │ 11 │ 11-01-2010 │
│ 12 │ 12 │ 12-01-2010 │
│ 13 │ 13 │ 13-01-2010 │
│ 14 │ 14 │ 14-01-2010 │
│ 15 │ 15 │ 15-01-2010 │
│ 16 │ 16 │ 16-01-2010 │
│ 17 │ 17 │ 17-01-2010 │
│ 18 │ 18 │ 18-01-2010 │
│ 19 │ 19 │ 19-01-2010 │
│ 20 │ 20 │ 20-01-2010 │
读取 csv 文件后 date
列为 String
类型。如何从外部将字符串系列转换为日期时间系列。在 Julia Data Frame docs 中没有谈论任何关于 TimeSeries 的事情。
如何从外部将系列或矢量转换为日期时间格式?
无论如何,我可以在阅读 CSV 文件时提及时间序列列吗?
读入 CSV 文件时,您可以在 CSV.jl 中指定 dateformat
kwarg:
CSV.File("your_file_name.csv", dateformat="dd-mm-yyyy") |> DataFrame
另一方面,如果您的数据框称为 df
,则在您的情况下将 String
转换为 Date
使用:
using Dates
df.Date = Date.(df.Date, "dd-mm-yyyy")
这是我的做法:
首先是一个转换不同字符串格式的辅助函数。
parse_date(d::AbstractString) = DateTime(d, dateformat"yyyy-mm-dd HH:MM:SS")
parse_date(v::Vector{AbstractString}) = parse_date.(v)
parse_date(v::Vector{String}) = parse_date.(v)
parse_date(v::Vector{String31}) = parse_date(String.(v))
using Pipe, TimeSeries
prices = @pipe CSV.File(filename; header = 1, delim = ",") |>
TimeArray(_; timestamp = :Date, timeparser = parse_date)
我有一个如下所示的 csv 文件,
20×2 DataFrame
│ Row │ Id │ Date │
│ │ Int64 │ String │
├─────┼───────┼────────────┤
│ 1 │ 1 │ 01-01-2010 │
│ 2 │ 2 │ 02-01-2010 │
│ 3 │ 3 │ 03-01-2010 │
│ 4 │ 4 │ 04-01-2010 │
│ 5 │ 5 │ 05-01-2010 │
│ 6 │ 6 │ 06-01-2010 │
│ 7 │ 7 │ 07-01-2010 │
│ 8 │ 8 │ 08-01-2010 │
│ 9 │ 9 │ 09-01-2010 │
│ 10 │ 10 │ 10-01-2010 │
│ 11 │ 11 │ 11-01-2010 │
│ 12 │ 12 │ 12-01-2010 │
│ 13 │ 13 │ 13-01-2010 │
│ 14 │ 14 │ 14-01-2010 │
│ 15 │ 15 │ 15-01-2010 │
│ 16 │ 16 │ 16-01-2010 │
│ 17 │ 17 │ 17-01-2010 │
│ 18 │ 18 │ 18-01-2010 │
│ 19 │ 19 │ 19-01-2010 │
│ 20 │ 20 │ 20-01-2010 │
读取 csv 文件后 date
列为 String
类型。如何从外部将字符串系列转换为日期时间系列。在 Julia Data Frame docs 中没有谈论任何关于 TimeSeries 的事情。
如何从外部将系列或矢量转换为日期时间格式?
无论如何,我可以在阅读 CSV 文件时提及时间序列列吗?
读入 CSV 文件时,您可以在 CSV.jl 中指定 dateformat
kwarg:
CSV.File("your_file_name.csv", dateformat="dd-mm-yyyy") |> DataFrame
另一方面,如果您的数据框称为 df
,则在您的情况下将 String
转换为 Date
使用:
using Dates
df.Date = Date.(df.Date, "dd-mm-yyyy")
这是我的做法:
首先是一个转换不同字符串格式的辅助函数。
parse_date(d::AbstractString) = DateTime(d, dateformat"yyyy-mm-dd HH:MM:SS")
parse_date(v::Vector{AbstractString}) = parse_date.(v)
parse_date(v::Vector{String}) = parse_date.(v)
parse_date(v::Vector{String31}) = parse_date(String.(v))
using Pipe, TimeSeries
prices = @pipe CSV.File(filename; header = 1, delim = ",") |>
TimeArray(_; timestamp = :Date, timeparser = parse_date)