我使用了Julia 1.7命令dfc = DataFrame(XLSX.readtable("data.xlsx","sheet1")...)
的效果良好
迁移到Julia 1.8后,相同的命令停止工作,并生成以下错误消息:
ERROR: MethodError: no method matching iterate(::XLSX.DataTable)
Closest candidates are:
iterate(!Matched::Union{LinRange, StepRangeLen}) at range.jl:872
iterate(!Matched::Union{LinRange, StepRangeLen}, !Matched::Integer) at range.jl:872
iterate(!Matched::T) where T<:Union{Base.KeySet{<:Any, <:Dict}, Base.ValueIterator{<:Dict}} at dict.jl:712
在新版本中,该命令发生了什么变化?
期待一些信息
这与您使用的Julia版本无关,也与您正在使用的XLSX.jl版本无关。XLSX文档实际上在这里有一段时间专门讨论这个问题。与您相关的是,readtable
现在返回一个Tables.jl兼容的表,因此可以直接传递到DataFrame构造函数中,而不是
DataFrame(XLSX.readtable(myfile, sheet)...)
你做
DataFrame(XLSX.readtable(myfile, sheet))
(注意缺少飞溅操作员(
请注意,当您根据Semver在软件包的中断发布之间移动时,预计会出现这些类型的问题,因此,无论是在主要版本(1.x到2.x版本(之间,还是在1.0之前的次要版本(如0.5.x到0.6.x(之间。如果你想避免这些问题,你应该使用特定于项目的环境,这样Manifest就会记录你正在使用的所有包的版本,除非你为该特定环境手动执行] up
,否则它们不会更改。