gpt4 book ai didi

julia - 如何在 Julia 中按多列对数据框进行排序

转载 作者:行者123 更新时间:2023-12-05 01:14:17 26 4
gpt4 key购买 nike

我想按多列对数据框进行排序。这是我制作的一个简单的数据框。如何按不同的排序类型对每一列进行排序?

using DataFrames

DataFrame(b = ("Hi", "Med", "Hi", "Low"),
levels = ("Med", "Hi", "Low"),
x = ("A", "E", "I", "O"), y = (6, 3, 7, 2),
z = (2, 1, 1, 2))

here 移植过来.

最佳答案

与 R 不同,Julia 的 DataFrame 构造函数期望每列中的值作为向量而不是元组传递:所以 DataFrame(b = ["Hi", "Med", "Hi", "Low "], &tc.

此外,DataFrames 并不期望像 R 那样给出明确的 levels。相反,可选的关键字参数 categorical 是可用的,并且应该设置为“一个 Bool 向量,指示哪些列应该转换为 CategoricalVector”。

(添加 DataFrames 和 CategoricalArrays 包后)


julia> using DataFrames, CategoricalArrays

julia> xyorz = categorical(rand(("x","y","z"), 5))
5-element CategoricalArray{String,1,UInt32}:
"z"
"y"
"x"
"x"
"z"

julia> smallints = rand(1:4, 5)
5-element Array{Int64,1}:
2
3
2
1
1

julia> df = DataFrame(A = 1:5, B = xyorz, C = smallints)
5×3 DataFrame
│ Row │ A │ B │ C │
│ │ Int64 │ Categorical… │ Int64 │
├─────┼───────┼──────────────┼───────┤
│ 1 │ 1 │ z │ 2 │
│ 2 │ 2 │ y │ 3 │
│ 3 │ 3 │ x │ 2 │
│ 4 │ 4 │ x │ 1 │
│ 5 │ 5 │ z │ 1 │

现在,您要排序什么? A 上(B 然后 C)? [4, 3, 2, 5, 1]

julia> sort(df, (:B, :C))
5×3 DataFrame
│ Row │ A │ B │ C │
│ │ Int64 │ Categorical… │ Int64 │
├─────┼───────┼──────────────┼───────┤
│ 1 │ 4 │ x │ 1 │
│ 2 │ 3 │ x │ 2 │
│ 3 │ 2 │ y │ 3 │
│ 4 │ 5 │ z │ 1 │
│ 5 │ 1 │ z │ 2 │

julia> sort(df, (:B, :C)).A
5-element Array{Int64,1}:
4
3
2
5
1

这是一个很好的起点http://juliadata.github.io/DataFrames.jl/stable/

关于julia - 如何在 Julia 中按多列对数据框进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58919362/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com