怎么删除DataFrame里面的内容

怎么删除dataframe里面的内容呢,使其更新?

group=[:A,:A,:B,:B,:C,:C,:C,:C]
X = 100:108
df = DataFrame(; group, X)
julia> df = DataFrame(; group, X)
8×2 DataFrame
 Row │ group   X
     │ Symbol  Int64
─────┼───────────────
   1 │ A           101
   2 │ A           102
   3 │ B           103
   4 │ B           104
   5 │ C           105
   6 │ C           106
   7 │ C           107
   8 │ C           108

我想删除以C的开始的第二行,应该要怎么写呢?不写成deleteat!(df,6),怎么在代码中体现出C和2呢?希望大佬指导

首先找出所有含:C的行:

julia> idx = findall(∋(:C), eachrow(df))
4-element Vector{Int64}:
 5
 6
 7
 8

按照你的需求删除第idx[2]行:

deleteat!(df, idx[2])
2 个赞

老师,那我要是想用C和106去体现,应该怎么写呢?就是让代码体现出C和106,还是删除那一行,我试了下findall不行了,这个要怎么弄呢?

你的意思是删除Symbol=C, X=106的行吗?

是这样的,老师我写成了这样 ,但是感觉有些慢,还有更快的高效的方法吗?

deleteat!(df,findall(df.group .== :C .&& df.X .== 106))

你是指速度慢吗? 在100万行的DataFrame上Benchmark看起来速度还好啊

BenchmarkTools.Trial: 2899 samples with 1 evaluation.
 Range (min … max):  1.577 ms …   3.258 ms  ┊ GC (min … max): 0.00% … 0.00%
 Time  (median):     1.660 ms               ┊ GC (median):    0.00%
 Time  (mean ± σ):   1.720 ms ± 161.302 μs  ┊ GC (mean ± σ):  0.08% ± 1.10%