根据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
。但是我忘记在切换环境后重新编译包(由于与其他包的兼容性问题,我加载了一个旧版本)。