5

我有一个 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文档中没有谈论有关 TimeSeries 的任何内容。如何从外部将系列或矢量转换为日期时间格式?无论如何我可以在读取 CSV 文件时提及时间序列列吗?

4

2 回答 2

6

读入 CSV 文件时,您可以在 CSV.jl 中指定dateformatkwarg:

CSV.File("your_file_name.csv", dateformat="dd-mm-yyyy") |> DataFrame

另一方面,如果您的数据框被调用,则在您的情况下df转换String为:Date

using Dates
df.Date = Date.(df.Date, "dd-mm-yyyy")
于 2020-07-06T07:55:17.120 回答
1

以下是我的做法:

首先是一个帮助函数来转换不同的字符串格式。

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)
于 2021-12-30T07:36:36.733 回答