【问题标题】:Issues using DateTime function with Julia在 Julia 中使用 DateTime 函数的问题
【发布时间】:2018-07-21 09:56:33
【问题描述】:

当我在 Jupyter 笔记本中读取 csv 文件时,我得到以下输出

54×9 Array{Any,2}:
 "\"25 Nov 2015\""  28637  11314  3804  2536  10675    4808    14122    3955  
 "\"18 Nov 2015\""  28634  11314  3804  2536  10672    4808    14122    3955  
 "\"11 Nov 2015\""  28635  11314  3805  2536  10672    4808    14122    3955  
 "\"4 Nov 2015\""   28607  11314  3810  2536  10672    4808    14089    3955  
 "\"25 Oct 2015\""  28539  11298  3806  2535  10672    4808    14061    3955  
 ⋮                                                ⋮                           
 "\"12 May 2014\""    260    182   248   171     12      11         ""      ""
 "\"1 May 2014\""     239    160   226   149     13      11         ""      ""
 "\"14 Apr 2014\""    176    110   168   108      8       2         ""      ""
 "\"31 Mar 2014\""    130     82   122    80      8       2         ""      ""
 "\"22 Mar 2014\""     49     29    49    29       ""      ""       ""      ""

我想将第一列内容更改为日-月-年格式,以计算自第一次观察以来经过的年数(在本例中是我的最后一行)。

我尝试使用字符串转换列,然后使用 for 循环(假设我的文件名为“ebola”

dias = string.(ebola[:,1])

for i = 1:length(dias) 
    dias[i] = DateTime(dias[i], "d-m-y")
end

在那之后,我收到了这个错误信息

    ArgumentError: Unable to parse date time. Expected directive DatePart(d) at char 1

我想这个错误的出现是因为字符串有一个非常规的格式来操作它,有四个“”符号和一些反斜杠:

"\"25 Nov 2015\""

我必须在输入时添加,例如:

length("\"22 Mar 2014\"")

当您可以计算 17 个字符时,结果为 13,因此很明显反斜杠会产生一些“噪音”。

为了执行我想做的任务,我可以做些什么来将字符串转换为适当的格式? 任何帮助将不胜感激。

【问题讨论】:

    标签: function datetime jupyter-notebook julia


    【解决方案1】:

    原因是"\"22 Mar 2014\""是一个字符串,里面包含"字符。您可以通过打印来检查它:

    julia> s = "\"22 Mar 2014\""
    "\"22 Mar 2014\""
    
    julia> print(s)
    "22 Mar 2014"
    

    为了解析日期,请使用正确的格式字符串,例如:

    julia> Date(s,"\"d u y\"")
    2014-03-22
    

    以下是如何从数组执行转换:

    julia> x = ["\"25 Nov 2015\""  28637  11314  3804  2536  10675    4808    14122    3955
                "\"18 Nov 2015\""  28634  11314  3804  2536  10672    4808    14122    3955
                "\"11 Nov 2015\""  28635  11314  3805  2536  10672    4808    14122    3955
                "\"4 Nov 2015\""   28607  11314  3810  2536  10672    4808    14089    3955
                "\"25 Oct 2015\""  28539  11298  3806  2535  10672    4808    14061    3955]
    5×9 Array{Any,2}:
     "\"25 Nov 2015\""  28637  11314  3804  2536  10675  4808  14122  3955
     "\"18 Nov 2015\""  28634  11314  3804  2536  10672  4808  14122  3955
     "\"11 Nov 2015\""  28635  11314  3805  2536  10672  4808  14122  3955
     "\"4 Nov 2015\""   28607  11314  3810  2536  10672  4808  14089  3955
     "\"25 Oct 2015\""  28539  11298  3806  2535  10672  4808  14061  3955
    
    julia> Date.(x[:,1], "\"d u y\"")
    5-element Array{Date,1}:
     2015-11-25
     2015-11-18
     2015-11-11
     2015-11-04
     2015-10-25
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-23
      • 2020-09-05
      • 2021-04-29
      • 2021-02-04
      • 2021-08-25
      相关资源
      最近更新 更多