gpt4 book ai didi

julia - 如何在给定分隔符的情况下将 DataFrame 列一分为二?

转载 作者:行者123 更新时间:2023-12-04 16:28:33 25 4
gpt4 key购买 nike

给定一个数据帧 df在 Julia :

using DataFrames
df = DataFrame(X = ['A', 'B', 'C'], Y = ["a|b", "a|c", "b|b"])

如何通过在“|”处拆分 Y 列来创建 Y1 和 Y2 列分隔符?

例如,在 R tidyverse 我会这样做:
separate(df, Y, c("Y1", "Y2"), by = "\\|")

最佳答案

据我所知,没有内置函数可以做到这一点。

我想到的两种相对简洁的方法是:

julia> df = DataFrame(X = ['A', 'B', 'C'], Y = ["a|b", "a|c", "b|b"])
3×2 DataFrame
│ Row │ X │ Y │
│ │ Char │ String │
├─────┼──────┼────────┤
│ 1 │ 'A' │ a|b │
│ 2 │ 'B' │ a|c │
│ 3 │ 'C' │ b|b │

julia> data = split.(df.Y, '|')
3-element Array{Array{SubString{String},1},1}:
["a", "b"]
["a", "c"]
["b", "b"]

julia> foreach(enumerate([:Y1, :Y2])) do (i, n)
df[!, n] = getindex.(data, i)
end

julia> df
3×4 DataFrame
│ Row │ X │ Y │ Y1 │ Y2 │
│ │ Char │ String │ SubStrin… │ SubStrin… │
├─────┼──────┼────────┼───────────┼───────────┤
│ 1 │ 'A' │ a|b │ a │ b │
│ 2 │ 'B' │ a|c │ a │ c │
│ 3 │ 'C' │ b|b │ b │ b │

或者
julia> df = DataFrame(X = ['A', 'B', 'C'], Y = ["a|b", "a|c", "b|b"])
3×2 DataFrame
│ Row │ X │ Y │
│ │ Char │ String │
├─────┼──────┼────────┤
│ 1 │ 'A' │ a|b │
│ 2 │ 'B' │ a|c │
│ 3 │ 'C' │ b|b │

julia> hcat(df, DataFrame(reduce(vcat, permutedims.(split.(df.Y, '|'))), [:Y1, :Y2]))
3×4 DataFrame
│ Row │ X │ Y │ Y1 │ Y2 │
│ │ Char │ String │ SubStrin… │ SubStrin… │
├─────┼──────┼────────┼───────────┼───────────┤
│ 1 │ 'A' │ a|b │ a │ b │
│ 2 │ 'B' │ a|c │ a │ c │
│ 3 │ 'C' │ b|b │ b │ b │

关于julia - 如何在给定分隔符的情况下将 DataFrame 列一分为二?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57599906/

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