我正在学习Mr.Tom Kwong的https://github.com/tk3369/data-wrangling-techniques-in-julia教程。
DataFrame如下所示:
julia> df3=stack(df2, Not(:County), variable_name=:Year_Gender, value_name=:Suicides)
486×3 DataFrame
│ Row │ Year_Gender │ Suicides │ County │
│ │ Symbol │ Int64 │ String │
├─────┼───────────────────┼──────────┼──────────────┤
│ 1 │ Female (2012) │ 0 │ Asotin │
│ 2 │ Female (2012) │ 0 │ Benton │
│ 3 │ Female (2012) │ 0 │ Chelan │
│ 4 │ Female (2012) │ 0 │ Clallam │
│ 5 │ Female (2012) │ 1 │ Clark │
│ 6 │ Female (2012) │ 0 │ Columbia │
│ 7 │ Female (2012) │ 0 │ Cowlitz │
│ 8 │ Female (2012) │ 0 │ Douglas │
│ 9 │ Female (2012) │ 0 │ Grays Harbor │
│ 10 │ Female (2012) │ 0 │ Island │
│ 11 │ Female (2012) │ 0 │ Jefferson │
│ 12 │ Female (2012) │ 3 │ King │
│ 13 │ Female (2012) │ 0 │ Kitsap │
│ 14 │ Female (2012) │ 0 │ Lewis │
│ 15 │ Female (2012) │ 0 │ Mason │
│ 16 │ Female (2012) │ 0 │ Okanogan │
│ 17 │ Female (2012) │ 0 │ Pacific │
│ 18 │ Female (2012) │ 1 │ Pierce │
│ 19 │ Female (2012) │ 0 │ Skagit │
│ 20 │ Female (2012) │ 0 │ Snohomish │
│ 21 │ Female (2012) │ 0 │ Spokane │
⋮
│ 465 │ Total (2008-2012) │ 1 │ Columbia │
│ 466 │ Total (2008-2012) │ 1 │ Cowlitz │
│ 467 │ Total (2008-2012) │ 2 │ Douglas │
│ 468 │ Total (2008-2012) │ 6 │ Grays Harbor │
│ 469 │ Total (2008-2012) │ 2 │ Island │
│ 470 │ Total (2008-2012) │ 1 │ Jefferson │
│ 471 │ Total (2008-2012) │ 33 │ King │
│ 472 │ Total (2008-2012) │ 1 │ Kitsap │
│ 473 │ Total (2008-2012) │ 1 │ Lewis │
│ 474 │ Total (2008-2012) │ 1 │ Mason │
│ 475 │ Total (2008-2012) │ 2 │ Okanogan │
│ 476 │ Total (2008-2012) │ 3 │ Pacific │
│ 477 │ Total (2008-2012) │ 20 │ Pierce │
│ 478 │ Total (2008-2012) │ 3 │ Skagit │
│ 479 │ Total (2008-2012) │ 11 │ Snohomish │
│ 480 │ Total (2008-2012) │ 6 │ Spokane │
│ 481 │ Total (2008-2012) │ 2 │ Stevens │
│ 482 │ Total (2008-2012) │ 2 │ Thurston │
│ 483 │ Total (2008-2012) │ 1 │ Walla Walla │
│ 484 │ Total (2008-2012) │ 5 │ Whatcom │
│ 485 │ Total (2008-2012) │ 1 │ Whitman │
│ 486 │ Total (2008-2012) │ 8 │ Yakima │我尝试按如下方式拆分Year_Gender列值:
julia> df3.Year=[split(x, " ")[1] for x in df3.Year_Gender]
ERROR: MethodError: no method matching split(::Symbol, ::String)
Closest candidates are:
split(::T, ::Any; limit, keepempty) where T<:AbstractString at strings/util.jl:313
Stacktrace:
[1] (::var"#3#4")(::Symbol) at ./none:0
[2] iterate at ./generator.jl:47 [inlined]
[3] collect(::Base.Generator{Array{Symbol,1},var"#3#4"}) at ./array.jl:665
[4] top-level scope at REPL[9]:1
julia> 请指导我如何在DataFrames版本0.19中拆分列值,因为我无法更新。
发布于 2021-07-27 13:33:37
首先,我不建议使用DataFrames 0.19 -当前版本是1.2,所以0.19在这一点上是相当古老的。由于DataFrames已经通过了它的第一个主要版本1.0,现在被认为是稳定的,所以最好学习当前的工作方式,因为这可能会在可预见的未来为您提供很好的服务。
话虽如此,您的问题与DataFrames无关,而只是Julia的基础工作方式:
julia> split(Symbol("Female (2012)"), " ")
ERROR: MethodError: no method matching split(::Symbol, ::String)
Closest candidates are:
split(::T, ::Any; limit, keepempty) where T<:AbstractString at strings/util.jl:401
Stacktrace:
[1] top-level scope
@ REPL[5]:1如果要使用split,则需要在列中使用String而不是Symbol来拆分它:
julia> split(string(Symbol("Female (2012)")), " ")
2-element Vector{SubString{String}}:
"Female"
"(2012)"您可以使用last访问其中的第二个元素,您可能还想考虑删除括号,然后对其调用parse(Int, x)以获得一个数字。
https://stackoverflow.com/questions/68538219
复制相似问题