using DataFrames
df = DataFrame(a=1:3, b=1:3)
Run Code Online (Sandbox Code Playgroud)
如何创建一个新列,c以便c = a+b元素明智?
通过阅读文档无法弄清楚transform。
我知道
df[!, :c] = df.a .+ df.b
有效,但我想transform在这样的链中使用
@chain df begin
@transform(c = :a .+ :b)
@where(...)
groupby(...)
end
Run Code Online (Sandbox Code Playgroud)
上述语法不适用于 DataFramesMeta.jl
Bog*_*ski 10
这是使用 DataFrames.jl 的答案。
\n要创建新的数据框:
\njulia> transform(df, [:a,:b] => (+) => :c)\n3\xc3\x973 DataFrame\n Row \xe2\x94\x82 a b c \n \xe2\x94\x82 Int64 Int64 Int64 \n\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xbc\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\n 1 \xe2\x94\x82 1 1 2\n 2 \xe2\x94\x82 2 2 4\n 3 \xe2\x94\x82 3 3 6\nRun Code Online (Sandbox Code Playgroud)\n对于就地操作:
\njulia> transform!(df, [:a,:b] => (+) => :c)\n3\xc3\x973 DataFrame\n Row \xe2\x94\x82 a b c \n \xe2\x94\x82 Int64 Int64 Int64 \n\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xbc\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\n 1 \xe2\x94\x82 1 1 2\n 2 \xe2\x94\x82 2 2 4\n 3 \xe2\x94\x82 3 3 6\nRun Code Online (Sandbox Code Playgroud)\n或者
\njulia> insertcols!(df, :c => df.a + df.b)\n3\xc3\x973 DataFrame\n Row \xe2\x94\x82 a b c \n \xe2\x94\x82 Int64 Int64 Int64 \n\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xbc\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\n 1 \xe2\x94\x82 1 1 2\n 2 \xe2\x94\x82 2 2 4\n 3 \xe2\x94\x82 3 3 6\nRun Code Online (Sandbox Code Playgroud)\ntransform!和之间的区别insertcols!在于,如果数据框中存在列,则会insertcols!出错,而会覆盖它。:ctransform!
| 归档时间: |
|
| 查看次数: |
2692 次 |
| 最近记录: |