在Julia DataFrames中拆分字符串会产生错误



根据DataFrames作者的博客。下面的代码行应该工作select(df, :name => ByRow(split) => [:firsname, :lastname])。然而,我得到了一个错误。

我是不是忽略了什么?

using DataFrames
using CSV
using Pkg
df = DataFrame(id = 1:6,
name = ["Aaron Aardvark", "Belen Barboza",
"春 陈", "Даниил Дубов",
"Elżbieta Elbląg", "Felipe Fittipaldi"])
select(df, :name => ByRow(split) => [:firsname, :lastname])
# expected this
6×2 DataFrame
Row │ firsname   lastname
│ SubStrin…  SubStrin…
─────┼───────────────────────
1 │ Aaron      Aardvark
2 │ Belen      Barboza
3 │ 春         陈
4 │ Даниил     Дубов
5 │ Elżbieta   Elbląg
6 │ Felipe     Fittipaldi
# but got this
ArgumentError: Unrecognized column selector: :name => (ByRow{typeof(split)}(split) => [:firsname, :lastname])
in top-level scope at Repos/Thesis/src/scripts/stackoverflow.jl:23
in select at DataFrames/GtZ1l/src/abstractdataframe/selection.jl:493
in #select#296 at DataFrames/GtZ1l/src/abstractdataframe/selection.jl:493 
in manipulate##kw at DataFrames/GtZ1l/src/abstractdataframe/selection.jl:558 
in #manipulate#301 at DataFrames/GtZ1l/src/abstractdataframe/selection.jl:566
in collect at base/array.jl:686
in iterate at base/generator.jl:47 
in  at base/none
in normalize_selection at DataFrames/GtZ1l/src/abstractdataframe/selection.jl:42
# However this does work
select(df, :name => ByRow(split))
6x1 DataFrame
│ Row │ name_split               │
│     │ Array…                   │
├─────┼──────────────────────────┤
│ 1   │ ["Aaron", "Aardvark"]    │
│ 2   │ ["Belen", "Barboza"]     │
│ 3   │ ["春", "陈"]             │
│ 4   │ ["Даниил", "Дубов"]      │
│ 5   │ ["Elżbieta", "Elbląg"]   │
│ 6   │ ["Felipe", "Fittipaldi"] │

Pkg.status()
> [336ed68f] CSV v0.8.3
> [a93c6f00] DataFrames v0.22.5
VERSION 
> v"1.5.3"

重新加载环境后,它确实工作了。该命令适用于DataFrames@0.22.5。但是我忘记在切换环境后重新编译包(由于与其他包的兼容性问题,我加载了一个旧版本)。

相关内容

最新更新