Dataframe 如何更改Julia数据帧中列的顺序?

Dataframe 如何更改Julia数据帧中列的顺序?,dataframe,julia,Dataframe,Julia,假设我有这样一个数据帧: julia> df = DataFrame(a = [1,2,3], b = [3,4,5]) 3×2 DataFrames.DataFrame │ Row │ a │ b │ ├─────┼───┼───┤ │ 1 │ 1 │ 3 │ │ 2 │ 2 │ 4 │ │ 3 │ 3 │ 5 │ select!(df, [:b, :a]) 接下来如何更改列的顺序,使列:b位于列:a之前?这很简单,但我花了一段时间才明白,所以我想在这里发布它: juli

假设我有这样一个数据帧:

julia> df = DataFrame(a = [1,2,3], b = [3,4,5])
3×2 DataFrames.DataFrame
│ Row │ a │ b │
├─────┼───┼───┤
│ 1   │ 1 │ 3 │
│ 2   │ 2 │ 4 │
│ 3   │ 3 │ 5 │
select!(df, [:b, :a])

接下来如何更改列的顺序,使列
:b
位于列
:a
之前?

这很简单,但我花了一段时间才明白,所以我想在这里发布它:

julia> df = df[!, [:b, :a]]
3×2 DataFrames.DataFrame
│ Row │ b │ a │
├─────┼───┼───┤
│ 1   │ 3 │ 1 │
│ 2   │ 4 │ 2 │
│ 3   │ 5 │ 3 │

这些是针对DataFrames.jl 0.21或更高版本的建议

如果你想写得快一点,你可以写

df[!, [2, 1]]
如果要就地更新
df
,可分两步进行:

df[!, 1], df[!, 2] = df[!, 2], df[!, 1]
rename!(df, [:b, :a])
速度更快

您也可以使用
select如下所示:

julia> df = DataFrame(a = [1,2,3], b = [3,4,5])
3×2 DataFrames.DataFrame
│ Row │ a │ b │
├─────┼───┼───┤
│ 1   │ 1 │ 3 │
│ 2   │ 2 │ 4 │
│ 3   │ 3 │ 5 │
select!(df, [:b, :a])

使用
select
select来自DataFrames.jl。例如:

julia> select(df, [:b, :a])
3×2 DataFrames.DataFrame
│ Row │ b │ a │
├─────┼───┼───┤
│ 1   │ 3 │ 1 │
│ 2   │ 4 │ 2 │
│ 3   │ 5 │ 3 │

我想最后一行应该是
select!(df,[:b,:a])
对-谢谢