让我们创建Julia DataFrame
df=convert(DataFrame, rand(10, 4))
Run Code Online (Sandbox Code Playgroud)
看起来像这样。我正在尝试对此dataFrame进行转置。如下所示,“转置”功能似乎不适用于Julia Data Frame。
过去,我已经广泛使用Python Pandas数据框包。在Python中,它就像“ df.T”一样简单。请让我知道一种处理此数据帧的方法。
斯蒂芬回答的问题是没有保留列的顺序(如果您不相信以下内容,请尝试 DataFrame
julia> df = DataFrame(A = 1:4, B = 5:8, AA = 15:18)
4×3 DataFrame
? Row ? A ? B ? AA ?
? ? Int64 ? Int64 ? Int64 ?
???????????????????????????????
? 1 ? 1 ? 5 ? 15 ?
? 2 ? 2 ? 6 ? 16 ?
? 3 ? 3 ? 7 ? 17 ?
? 4 ? 4 ? 8 ? 18 ?
Run Code Online (Sandbox Code Playgroud)
但这DataFrame
可以使用以下方法转置(保持列/行的顺序):
julia> DataFrame([[names(df)]; collect.(eachrow(df))], [:column; Symbol.(axes(df, 1))])
3×5 DataFrame
? Row ? column ? 1 ? 2 ? 3 ? 4 ?
? ? Symbol ? Int64 ? Int64 ? Int64 ? Int64 ?
????????????????????????????????????????????????
? 1 ? A ? 1 ? 2 ? 3 ? 4 ?
? 2 ? B ? 5 ? 6 ? 7 ? 8 ?
? 3 ? AA ? 15 ? 16 ? 17 ? 18 ?
Run Code Online (Sandbox Code Playgroud)
参考:https : //github.com/JuliaData/DataFrames.jl/issues/2065#issuecomment-568937464
小智 5
我有相同的问题,并尝试了对您的问题的评论中建议的策略。但是,我遇到的问题是,Matrix
如果您的DataFrame具有NA
值,则无法转换为。您必须将它们更改为其他内容,然后转换为Matrix
。NA
当我想Matrix
回到原来的DataFrame
类型时,遇到很多问题。
这里是一种用做DataFrame
的stack
和unstack
功能。
df = DataFrame(A = 1:4, B = 5:8)
df[:id] = 1:size(df, 1)
4×3 DataFrames.DataFrame
? Row ? A ? B ? id ?
????????????????????
? 1 ? 1 ? 5 ? 1 ?
? 2 ? 2 ? 6 ? 2 ?
? 3 ? 3 ? 7 ? 3 ?
? 4 ? 4 ? 8 ? 4 ?
Run Code Online (Sandbox Code Playgroud)
文档:id
建议添加该列,DataFrame
以帮助您进行堆叠。
现在,堆叠要转置的列:
dfl = stack(df, [:A, :B])
8×3 DataFrames.DataFrame
? Row ? variable ? value ? id ?
???????????????????????????????
? 1 ? A ? 1 ? 1 ?
? 2 ? A ? 2 ? 2 ?
? 3 ? A ? 3 ? 3 ?
? 4 ? A ? 4 ? 4 ?
? 5 ? B ? 5 ? 1 ?
? 6 ? B ? 6 ? 2 ?
? 7 ? B ? 7 ? 3 ?
? 8 ? B ? 8 ? 4 ?
Run Code Online (Sandbox Code Playgroud)
然后取消堆栈,切换ID和变量名称(这就是为什么必须添加:id
列的原因)。
dfnew = unstack(dfl, :variable, :id, :value)
2×5 DataFrames.DataFrame
? Row ? variable ? 1 ? 2 ? 3 ? 4 ?
??????????????????????????????????
? 1 ? A ? 1 ? 2 ? 3 ? 4 ?
? 2 ? B ? 5 ? 6 ? 7 ? 8 ?
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2238 次 |
最近记录: |