通过引用组合朱莉娅的数据框,而不是制作副本



在朱莉娅(Julia)中,您可以组合数据框架:

d1 = DataFrame(A=1:10)
d2 = DataFrame(A=11:20)
d3 = [d1; d2]

但是,这似乎将D1,D2复制到D3中。我不想复制它们。如果您对D1进行了修改,则不会反映在D3中。

任何人都知道如何通过参考而不是通过值组合它们,以便如果修改了D1,则更改反映了D3?

谢谢!

在数组类型术语中,您想要的是d1d2d3中数据的视图。数据框也是可能的:

julia> using DataFrames
julia> d3 = DataFrame(A=1:20);
julia> d1 = view(d3,1:10);
julia> d2 = view(d3,11:20);
julia> d1[1:3,:]
3×1 DataFrames.DataFrame
│ Row │ A │
├─────┼───┤
│ 1   │ 1 │
│ 2   │ 2 │
│ 3   │ 3 │
julia> d3[1:3,:]
3×1 DataFrames.DataFrame
│ Row │ A │
├─────┼───┤
│ 1   │ 1 │
│ 2   │ 2 │
│ 3   │ 3 │
julia> d1[1,:A] = 999
999
julia> d3[1:3,:]
3×1 DataFrames.DataFrame
│ Row │ A   │
├─────┼─────┤
│ 1   │ 999 │
│ 2   │ 2   │
│ 3   │ 3   │

当然,您可能需要首先创建d1d2,然后将它们组合到d3,但这需要复制操作(以使记忆中的列连续)。之后,您可以生成视图(并将其分配给d1d2)。可能建议使用不同的变量来进行视图,因为更改d1d2的类型可能会导致类型稳定(朱莉亚(Julia)不好)。

最新更新