dataframe - 将 SubDataFrame 变成 DataFrame?
问题描述
我有一个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 是最简单的方法:)
解决方案
一个有趣的问题。在当前的主人(很快就会被标记)上,写DataFrame(sdf)
where sdf
is a就足够了SubDataFrame
。它会创建所有向量的副本。
这是一个解决方案,它将创建一个DataFrame
包含view
所有向量的一个SubDataFrame
(它应该在主版本和当前标记的版本上工作):
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
容器类型,因为它在当前主机上会更快)
DataFrame
当它至少包含一列时,您将无法向其中添加行view
。
编辑:作为旁注(也许这最终是你的问题)。如果你有sdf
which is aSubDataFrame
其父级是df
whichDataFrame
如果你向其中添加列,df
它们将立即可见,sdf
因为SubDataFrame
仅选择行并从父级继承所有列。
推荐阅读
- powerbi - 当 SQL 中的语句连接多个表时,我有以下情况。我如何将其转换为 power bi DAX
- python - TypeError:不可散列的类型:'numpy.ndarray
- java - 找不到android媒体播放器文件
- java - Spring Web 应用程序。无法查看视图页面
- java - Android:如何旋转图像并设置填充片段?
- javascript - 如果存在单元号,则正则表达式从门牌号开始提取完整地址
- audio - 如何从 Amazon Fire TV 遥控器读取语音数据?
- django - 在 Django 1.11 和 2.0 中工作但在 Django 2.1-3.1 中没有数据内容形式的引导弹出窗口
- node.js - 如何从嵌套数组 mongodb 中获取单个匹配的文档?
- javascript - React JS:为什么第一次搜索时返回一个空数组?