如何更改Julia DataFrame中的列顺序?

Nic*_*tte 5 dataframe julia

假设我有一个像这样的DataFrame:

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 ?
Run Code Online (Sandbox Code Playgroud)

我如何随后更改列的顺序,以便列:b在列之前:a

Nic*_*tte 8

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

julia> df = df[[:b, :a]]
3×2 DataFrames.DataFrame
? Row ? b ? a ?
???????????????
? 1   ? 3 ? 1 ?
? 2   ? 4 ? 2 ?
? 3   ? 5 ? 3 ?
Run Code Online (Sandbox Code Playgroud)


Bog*_*ski 8

如果你想要更快,你可以写

df[[2, 1]]
Run Code Online (Sandbox Code Playgroud)

如果要进行更新df,可以分两步完成:

df[1], df[2] = df[2], df[1]
names!(df, [:b, :a])
Run Code Online (Sandbox Code Playgroud)

哪个更快.

编辑:permutecols!DataFrames.jl版本0.11.7提供了一个新功能,以便您可以就地重新排序列:

permutecols!(df, [:b, :a])
Run Code Online (Sandbox Code Playgroud)

  • `select!` 很聪明,不会重复列,因此您可以编写 `select!(df, first, secondary, :)` 将两列移到前面,而其余列保持不变。 (2认同)