小智 5
是的permutedims,它将数据框翻转过来,使得行变成列,列中的值变成名称。
transpose请注意 Julia Base 中和之间的区别permutedims。permutedims只影响最外面的容器。transpose是递归的。
以下是后果:
\njulia> x = [randstring(3) for _ in 1:3, _ in 1:3]\n3\xc3\x973 Matrix{String}:\n "nTa" "QBM" "3dJ"\n "RsL" "mD1" "3jq"\n "dFp" "bfB" "k6P"\n\njulia> permutedims(x)\n3\xc3\x973 Matrix{String}:\n "nTa" "RsL" "dFp"\n "QBM" "mD1" "bfB"\n "3dJ" "3jq" "k6P"\n\njulia> transpose(x)\n3\xc3\x973 transpose(::Matrix{String}) with eltype Union{}:\nError showing value of type LinearAlgebra.Transpose{Union{}, Matrix{String}}:\nERROR: MethodError: no method matching transpose(::String)\n\njulia> y = [rand(3) for _ in 1:3, _ in 1:3]\n3\xc3\x973 Matrix{Vector{Float64}}:\n [0.446435, 0.653228, 0.0857836] [0.378189, 0.505487, 0.0504642] [0.0570918, 0.462984, 0.800813]\n [0.801857, 0.75505, 0.714087] [0.253316, 0.458364, 0.80242] [0.93742, 0.699745, 0.140957]\n [0.419783, 0.22946, 0.748267] [0.445365, 0.563222, 0.363561] [0.088825, 0.0869342, 0.311187]\n\njulia> permutedims(y)\n3\xc3\x973 Matrix{Vector{Float64}}:\n [0.446435, 0.653228, 0.0857836] [0.801857, 0.75505, 0.714087] [0.419783, 0.22946, 0.748267]\n [0.378189, 0.505487, 0.0504642] [0.253316, 0.458364, 0.80242] [0.445365, 0.563222, 0.363561]\n [0.0570918, 0.462984, 0.800813] [0.93742, 0.699745, 0.140957] [0.088825, 0.0869342, 0.311187]\n\njulia> transpose(y) # note that inside we have 1x3 objects not vectors\n3\xc3\x973 transpose(::Matrix{Vector{Float64}}) with eltype LinearAlgebra.Transpose{Float64, Vector{Float64}}:\n [0.446435 0.653228 0.0857836] [0.801857 0.75505 0.714087] [0.419783 0.22946 0.748267]\n [0.378189 0.505487 0.0504642] [0.253316 0.458364 0.80242] [0.445365 0.563222 0.363561]\n [0.0570918 0.462984 0.800813] [0.93742 0.699745 0.140957] [0.088825 0.0869342 0.311187]\nRun Code Online (Sandbox Code Playgroud)\n在 DataFrames.jl 中,我们认为这种递归行为(这在线性代数上下文中有意义)是不可取的。您甚至可以在文档字符串中阅读以下内容transpose:
\n\n此操作旨在用于线性代数使用 - 对于一般数据操作,请参阅排列,它是非递归的。
\n
此外,在 DataFrames.jl 中,permutedims要求您指定在操作后将成为列名称的列(此要求是 DataFrames.jl 特定的),并且在执行提升时需要小心eltype(对于具有共同点的矩阵,此问题不可见)所有元素的 eltype,而在数据框中每列可能有不同的 eltype):
julia> df1 = DataFrame(rowkey=["x", "y"], b=[1.0, 2.0], c=[3, 4], d=[true, false])\n2\xc3\x974 DataFrame\n Row \xe2\x94\x82 rowkey b c d\n \xe2\x94\x82 String Float64 Int64 Bool\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\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 x 1.0 3 true\n 2 \xe2\x94\x82 y 2.0 4 false\n\njulia> df2 = permutedims(df1, :rowkey)\n3\xc3\x973 DataFrame\n Row \xe2\x94\x82 rowkey x y\n \xe2\x94\x82 String Float64 Float64\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\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\n 1 \xe2\x94\x82 b 1.0 2.0\n 2 \xe2\x94\x82 c 3.0 4.0\n 3 \xe2\x94\x82 d 1.0 0.0\n\njulia> permutedims(df2, :rowkey)\n2\xc3\x974 DataFrame\n Row \xe2\x94\x82 rowkey b c d\n \xe2\x94\x82 String Float64 Float64 Float64\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\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 x 1.0 3.0 1.0\n 2 \xe2\x94\x82 y 2.0 4.0 0.0\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
376 次 |
| 最近记录: |