dataframe - 如何在 DataFrames.jl(0.19 版)中拆分列值?
问题描述
我正在关注 Tom Kwong 先生的https://github.com/tk3369/data-wrangling-techniques-in-julia教程。
数据帧如下:
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 版中拆分列值,因为我无法更新。
解决方案
让我首先说我不建议使用 DataFrames 0.19 - 当前版本是 1.2,所以 0.19 在这一点上相当古老。由于 DataFrames 已经过了它的第一个主要版本 1.0,API 现在被认为是稳定的,所以最好学习当前的做事方式,因为这可能会在可预见的未来为您提供良好的服务。
话虽如此,您的问题与 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
,则需要在列中使用 aString
而不是 aSymbol
来拆分它:
julia> split(string(Symbol("Female (2012)")), " ")
2-element Vector{SubString{String}}:
"Female"
"(2012)"
您可以使用 访问此的第二个元素last
,并且您可能还需要考虑删除括号,然后调用parse(Int, x)
它以获取一个数字。
推荐阅读
- javascript - Safari 上出现倒数计时器 Nan 错误
- python - 如何在 Python 中安装 dbconnect 模块?
- java - 从不同的目录运行 Java 程序
- python - VS 代码和 Python
- flutter - FloatingActionButton 放置 Flutter
- python-3.x - 将 GCSFileSystem 与多处理一起使用
- splice - 如何从变量拼接项目?
- laravel - laravel-livewire 在按钮单击时返回视图
- ios - UIView 动画不适用于 UIView 的图层
- python-3.x - 我如何解决权限被拒绝的问题