gpt4 book ai didi

dataframe - 将 SubDataFrame 转换为 DataFrame?

转载 作者:行者123 更新时间:2023-12-04 14:22:35 25 4
gpt4 key购买 nike

我有一个 by 创建 SubDataFrames。如何将它们变成 DataFrame,最好不要复制?

我最初的问题是我无法向 SubDataFrame 添加新列:

# df[:End] = 1:nrow(merged_islands)
# ERROR: LoadError: Cannot assign to non-existent column: End

# insert!(df, length(df), Array(1:nrow(merged_islands)), :End)
# ERROR: LoadError: MethodError: no method matching insert!(::SubDataFrame{Array{Int64,1}}, ::Int64, ::Array{Int64,1}, ::Symbol)

我猜想将它转换成 DataFrame 是最简单的方法:)

最佳答案

一个有趣的问题。在当前的 master(即将被标记)上,编写 DataFrame(sdf) 就足够了,其中 sdf 是一个 SubDataFrame。不过,它会创建所有向量的副本。

这是一个解决方案,它将创建一个 DataFrame,其中包含 SubDataFrame 中包含的所有向量的 view(它应该同时适用于 master 和在当前标记的版本上):

function sdf2df(sdf::SubDataFrame)
p = parent(sdf)
sel = DataFrames.rows(sdf)
DataFrame(AbstractVector[view(p[i], sel) for i in 1:ncol(sdf)],
names(sdf))
end

(我使用 AbstractVector 容器类型,因为它在当前 master 上会更快)

当它包含至少一个 view 列时,您将无法向这样的 DataFrame 添加行。

编辑:作为旁注(也许这最终是您的问题)。如果您有 sdf,它是一个 SubDataFrame,其父级是 df,它是一个 DataFrame,那么如果您将列添加到df 它们将在 sdf 中立即可见,因为 SubDataFrame 仅选择行并从父级继承所有列。

关于dataframe - 将 SubDataFrame 转换为 DataFrame?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52493187/

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