首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在DataFrames.jl (0.19版)中拆分列值?

如何在DataFrames.jl (0.19版)中拆分列值?
EN

Stack Overflow用户
提问于 2021-07-27 10:24:34
回答 1查看 77关注 0票数 1

我正在学习Mr.Tom Kwong的https://github.com/tk3369/data-wrangling-techniques-in-julia教程。

DataFrame如下所示:

代码语言:javascript
复制
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列值:

代码语言:javascript
复制
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中拆分列值,因为我无法更新。

EN

回答 1

Stack Overflow用户

发布于 2021-07-27 13:33:37

首先,我不建议使用DataFrames 0.19 -当前版本是1.2,所以0.19在这一点上是相当古老的。由于DataFrames已经通过了它的第一个主要版本1.0,现在被认为是稳定的,所以最好学习当前的工作方式,因为这可能会在可预见的未来为您提供很好的服务。

话虽如此,您的问题与DataFrames无关,而只是Julia的基础工作方式:

代码语言:javascript
复制
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来拆分它:

代码语言:javascript
复制
julia> split(string(Symbol("Female (2012)")), " ")
2-element Vector{SubString{String}}:
 "Female"
 "(2012)"

您可以使用last访问其中的第二个元素,您可能还想考虑删除括号,然后对其调用parse(Int, x)以获得一个数字。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68538219

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档