如何在Julia数据帧上进行就地广播操作?

异氰酸烯丙酯

我有一个带有单列“名称”的数据框,我想就地小写该值。

现有的小写广播似乎会创建一个新的数据帧,我该如何做为原位修改?

julia> df
5×1 DataFrame
│ Row │ Name      │
│     │ String    │
├─────┼───────────┤
│ 1   │ Mary      │
│ 2   │ Anna      │
│ 3   │ Emma      │
│ 4   │ Elizabeth │
│ 5   │ Minnie    │

julia> lowercase.(df.Name)
5-element Array{String,1}:
 "mary"
 "anna"
 "emma"
 "elizabeth"
 "minnie"

julia> df
5×1 DataFrame
│ Row │ Name      │
│     │ String    │
├─────┼───────────┤
│ 1   │ Mary      │
│ 2   │ Anna      │
│ 3   │ Emma      │
│ 4   │ Elizabeth │
│ 5   │ Minnie    │
BogumiłKamiński

这是三个基本选项:

julia> df = DataFrame(Name = ["Mary", "Anna", "Emma"]);

julia> @. df.Name = lowercase(df.Name); # work on a single column in place

julia> df
3×1 DataFrame
│ Row │ Name   │
│     │ String │
├─────┼────────┤
│ 1   │ mary   │
│ 2   │ anna   │
│ 3   │ emma   │

julia> df = DataFrame(Name = ["Mary", "Anna", "Emma"]);

julia> @. df = lowercase.(df); # work on a whole data frame in place

julia> df
3×1 DataFrame
│ Row │ Name   │
│     │ String │
├─────┼────────┤
│ 1   │ mary   │
│ 2   │ anna   │
│ 3   │ emma   │

julia> df = DataFrame(Name = ["Mary", "Anna", "Emma"]);

julia> transform!(df, :Name => ByRow(lowercase) => :Name); # this time the column gets replaced instead of in-place modified

julia> df
3×1 DataFrame
│ Row │ Name   │
│     │ String │
├─────┼────────┤
│ 1   │ mary   │
│ 2   │ anna   │
│ 3   │ emma   │

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章