интересный вопрос.На текущем мастере (который будет помечен очень скоро) достаточно написать DataFrame(sdf)
, где sdf
- это 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
, который является SubDataFrame
, чьим родителем является df
, который является DataFrame
, тогда, если вы добавите столбцы к df
, они будут сразу же видны в sdf
, так как SubDataFrame
выбирает только строки инаследует все столбцы от родителя.