在Julia中,您可以组合数据框:
d1 = DataFrame(A=1:10)
d2 = DataFrame(A=11:20)
d3 = [d1; d2]
然而,这似乎将d1,d2复制到d3中。我不想复制它们。如果对d1进行修改,则不会反映在d3中。
任何人都知道如何通过引用而不是值来组合它们,这样如果修改了d1,那么更改会反映在d3中吗?
谢谢!
答案 0 :(得分:3)
在数组类型术语中,您希望d1
和d2
成为d3
中数据的视图。 DataFrames也可以这样做:
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 │
当然,您可能首先要创建d1
和d2
,然后将它们合并到d3
,但这需要复制操作(使列在内存中连续) )。之后,您可以生成视图(并将其分配给d1
和d2
)。可能会建议为视图使用不同的变量,因为更改d1
和d2
的类型可能会导致类型不稳定(Julia中的错误)。