朱莉娅:如何在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