朱莉娅DataFrames,插入新行的具体指标

问题描述 投票:0回答:1

有没有一种方法,以在指定索引行添加到现有的数据帧?

例如。你有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每当我想插入一行。

dataframe insert julia concat
1个回答
2
投票

我猜你想要做的很到位。然后,你可以使用这样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"])
© www.soinside.com 2019 - 2024. All rights reserved.