朱莉娅:如何在DataFrames.jl中通过使用“transform”或“transform”添加两列来创建新列?

朱莉娅:如何在DataFrames.jl中通过使用“transform”或“transform”添加两列来创建新列?,dataframe,julia,Dataframe,Julia,如何创建一个新的列c,以便c=a+b元素 无法通过读取transformdoc来理解它 我知道 df[!,:c]=df.a.+df.b 工作正常,但我想在这样的链中使用变换 using DataFrames df = DataFrame(a=1:3, b=1:3) 上述语法不适用于DataFramesMeta.jl这是使用DataFrames.jl的答案 要创建新的数据帧,请执行以下操作: @chain df begin @transform(c = :a .+ :b) @wher

如何创建一个新的列
c
,以便
c=a+b
元素

无法通过读取
transform
doc来理解它

我知道

df[!,:c]=df.a.+df.b

工作正常,但我想在这样的链中使用
变换

using DataFrames

df = DataFrame(a=1:3, b=1:3)


上述语法不适用于DataFramesMeta.jl

这是使用DataFrames.jl的答案

要创建新的数据帧,请执行以下操作:

@chain df begin
  @transform(c = :a .+ :b)
  @where(...)
  groupby(...)
end
对于就地操作:

julia> transform(df, [:a,:b] => (+) => :c)
3×3 DataFrame
 Row │ a      b      c     
     │ Int64  Int64  Int64 
─────┼─────────────────────
   1 │     1      1      2
   2 │     2      2      4
   3 │     3      3      6

转换之间的区别
插入工具就是
插入工具:c
列,而
转换时,code>将出错将覆盖它

julia> transform!(df, [:a,:b] => (+) => :c)
3×3 DataFrame
 Row │ a      b      c     
     │ Int64  Int64  Int64 
─────┼─────────────────────
   1 │     1      1      2
   2 │     2      2      4
   3 │     3      3      6
julia> insertcols!(df, :c => df.a + df.b)
3×3 DataFrame
 Row │ a      b      c     
     │ Int64  Int64  Int64 
─────┼─────────────────────
   1 │     1      1      2
   2 │     2      2      4
   3 │     3      3      6