Methoderror:在Julia中对数据帧使用sort()时,没有与isless匹配的方法

Methoderror:在Julia中对数据帧使用sort()时,没有与isless匹配的方法,julia,julia-dataframe,Julia,Julia Dataframe,我有一个EXCEL文件,我把它读入一个数据帧 using DataFrames, XLSX df = DataFrame(XLSX.readtable("Stocks/WIHL-Wihlborgs.xlsx", "PriceMonth")...) │ Row │ Date │ Openprice │ Highprice │ Lowprice │ Closeprice │ Volume │ │ │ Any │ Any

我有一个EXCEL文件,我把它读入一个数据帧

using DataFrames, XLSX
df = DataFrame(XLSX.readtable("Stocks/WIHL-Wihlborgs.xlsx", "PriceMonth")...)

│ Row │ Date       │ Openprice │ Highprice │ Lowprice │ Closeprice │ Volume   │
│     │ Any        │ Any       │ Any       │ Any      │ Any        │ Any      │
├─────┼────────────┼───────────┼───────────┼──────────┼────────────┼──────────┤
│ 1   │ 2020-12-23 │ 189.1     │ 189.7     │ 170.3    │ 181.5      │ 4170122  │
│ 2   │ 2020-11-30 │ 160.0     │ 191.6     │ 158.0    │ 189.1      │ 8006506  │
│ 3   │ 2020-10-30 │ 178.4     │ 184.3     │ 151.2    │ 160.6      │ 6760931  │
│ 4   │ 2020-09-30 │ 138.5     │ 178.8     │ 137.9    │ 177.5      │ 9005351  │
│ 5   │ 2020-08-31 │ 147.2     │ 152.1     │ 137.2    │ 138.3      │ 4865386  │

sort(df)
但是当我尝试在这个日期框上使用
sort()
函数时,我得到
LoadError:MethodError:no-method-matching-isless(::String,::Dates.Date)

我觉得这很奇怪,因为我在同一个excel文件中有另一个标签,上面有价格/天,这可以很好地排序。我看到的唯一区别是,在Excel文件中,“价格/月份”选项卡的“日期”字段为“日期”,而“价格/日期”选项卡的“日期”字段为“日期”。但在DataFrame中,两个选项卡都将日期字段设置为任意


我很难理解为什么prices/day选项卡使用的是
sort()
,而prices/month选项卡不使用,相反,它给了我
LoadError

将列更改为相应的数据类型应该可以解决这个问题(推断类型):

现在,对日期进行排序很好:

df[sortperm(df.Date),1:2]
#5×2 DataFrame
# Row │ Date        Openprice 
#     │ Date        Any       
#─────┼───────────────────────
#   1 │ 2020-08-31  147.2
#   2 │ 2020-09-30  138.5
#   3 │ 2020-10-30  178.4
#   4 │ 2020-11-30  160
#   5 │ 2020-12-23  189.1
也可以手动设置日期类型:

using Dates

df.Date = Dates.Date.(string.(df.Date), "yyyy-mm-dd")
#5-element Array{Date,1}:
# 2020-12-23
# 2020-11-30
# 2020-10-30
# 2020-09-30
# 2020-08-31

将列更改为相应的数据类型应该可以解决此问题(推断类型):

现在,对日期进行排序很好:

df[sortperm(df.Date),1:2]
#5×2 DataFrame
# Row │ Date        Openprice 
#     │ Date        Any       
#─────┼───────────────────────
#   1 │ 2020-08-31  147.2
#   2 │ 2020-09-30  138.5
#   3 │ 2020-10-30  178.4
#   4 │ 2020-11-30  160
#   5 │ 2020-12-23  189.1
也可以手动设置日期类型:

using Dates

df.Date = Dates.Date.(string.(df.Date), "yyyy-mm-dd")
#5-element Array{Date,1}:
# 2020-12-23
# 2020-11-30
# 2020-10-30
# 2020-09-30
# 2020-08-31

infere\u eltypes=true
没有将“我的日期”列更改为数据类型日期。因此,我需要手动更改类型,正如您在第二个示例中所示,这非常有效。
infere_eltypes=true
没有将我的日期列更改为数据类型日期。因此,我需要手动更改类型,正如您在第二个示例中所示,这非常有效。