有没有一种方法,以在指定索引行添加到现有的数据帧?
例如。你有3行1列的数据帧
df = DataFrame(x = [2,3,4])
X
2
3
4
没有办法做到以下几点:
insert!(df, 1, [1])
为了得到
X
1
2
3
4
我知道,我大概可以Concat的2 dataframes DF = [DF1; DF2]但我希望避免garbaging大DF每当我想插入一行。
我猜你想要做的很到位。然后,你可以使用这样insert!
功能:
julia> df = DataFrame(x = [1,2,3], y = ["a", "b", "c"])
3×2 DataFrames.DataFrame
│ Row │ x │ y │
├─────┼───┼───┤
│ 1 │ 1 │ a │
│ 2 │ 2 │ b │
│ 3 │ 3 │ c │
julia> foreach((v,n) -> insert!(df[n], 2, v), [4, "d"], names(df))
julia> df
4×2 DataFrames.DataFrame
│ Row │ x │ y │
├─────┼───┼───┤
│ 1 │ 1 │ a │
│ 2 │ 4 │ d │
│ 3 │ 2 │ b │
│ 4 │ 3 │ c │
当然,你必须确保你有加入集合中列的正确数量。
如果您接受使用DataFrame
的未导出的内部结构,你可以做到这一点更简单:
julia> df = DataFrame(x = [1,2,3], y = ["a", "b", "c"])
3×2 DataFrames.DataFrame
│ Row │ x │ y │
├─────┼───┼───┤
│ 1 │ 1 │ a │
│ 2 │ 2 │ b │
│ 3 │ 3 │ c │
julia> insert!.(df.columns, 2, [4, "d"])
2-element Array{Array{T,1} where T,1}:
[1, 4, 2, 3]
String["a", "d", "b", "c"]
julia> df
4×2 DataFrames.DataFrame
│ Row │ x │ y │
├─────┼───┼───┤
│ 1 │ 1 │ a │
│ 2 │ 4 │ d │
│ 3 │ 2 │ b │
│ 4 │ 3 │ c │
更新
由于朱莉娅1.0 df.columns
不起作用。而是写:
insert!.(eachcol(df, false), 2, [4, "d"])