# Remove column having missing values and assign default names again

**URL:** <https://discourse.julialang.org/t/remove-column-having-missing-values-and-assign-default-names-again/102666>\
**Category:** Data\
**Tags:** dataframes\
**Created:** [August 10, 2023, 9:32am UTC](https://discourse.julialang.org/t/remove-column-having-missing-values-and-assign-default-names-again/102666 "2023-08-10T09:32:02Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![raman\_kumar](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/raman_kumar/32/26782_2.png) [@raman\_kumar](https://discourse.julialang.org/u/raman_kumar)\
**Post date:** [August 10, 2023, 9:32am UTC](https://discourse.julialang.org/t/remove-column-having-missing-values-and-assign-default-names-again/102666/1 "2023-08-10T09:32:02Z")

</div>

I have a dataframe having default(not given) column names ➖`Column1 Column2 Column3` .

![image](https://global.discourse-cdn.com/julialang/original/3X/1/1/11d6a45575e967b271f5f4389f8f08ac6a7e20d8.png)

and after removing Column containing `missing` values using `df=df[!, Not(all.(ismissing, eachcol(df)))]` it looks like 👇

![image](https://global.discourse-cdn.com/julialang/original/3X/d/5/d5191e48da1e400a00f3627e9f95a77d25be4b43.png)  
I want to assign them default column names again so that column names becomes ➖`Column1 Column2` .  
 I don’t want to rename them manually using `rename!(df, [:Column1, :Column2]`.

---

<div class="post-metadata">

**Author:** ![hendri54](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/hendri54/32/9621_2.png) [@hendri54](https://discourse.julialang.org/u/hendri54)\
**Post date:** [August 10, 2023, 11:47am UTC](https://discourse.julialang.org/t/remove-column-having-missing-values-and-assign-default-names-again/102666/2 "2023-08-10T11:47:15Z")

</div>

I am not sure what you mean by “I don’t want to rename them manually”. Assuming you mean that you don’t want to hard code the names, you could do

```julia
julia> df = DataFrame(rand(4,3), :auto)
4×3 DataFrame
 Row │ x1 x2 x3
     │ Float64 Float64 Float64
─────┼─────────────────────────────────
   1 │ 0.522163 0.668836 0.808715
   2 │ 0.974633 0.729561 0.649561
   3 │ 0.236896 0.00306799 0.0709158
   4 │ 0.318055 0.758109 0.641894

julia> df2 = select(df, Not(:x2))
4×2 DataFrame
 Row │ x1 x3
     │ Float64 Float64
─────┼─────────────────────
   1 │ 0.522163 0.808715
   2 │ 0.974633 0.649561
   3 │ 0.236896 0.0709158
   4 │ 0.318055 0.641894

rename!(df2, names(df2) .=> names(df)[1 : ncol(df2)])
4×2 DataFrame
 Row │ x1 x2
     │ Float64 Float64
─────┼─────────────────────
   1 │ 0.522163 0.808715
   2 │ 0.974633 0.649561
   3 │ 0.236896 0.0709158
   4 │ 0.318055 0.641894

```

---

<div class="post-metadata">

**Author:** ![raman\_kumar](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/raman_kumar/32/26782_2.png) [@raman\_kumar](https://discourse.julialang.org/u/raman_kumar)\
**Post date:** [August 10, 2023, 12:33pm UTC](https://discourse.julialang.org/t/remove-column-having-missing-values-and-assign-default-names-again/102666/3 "2023-08-10T12:33:41Z")

</div>

> [@hendri54](#):
>
> `df2 = select(df, Not(:x2))`

I want to remove any column containing only `missing` values.

---

<div class="post-metadata">

**Author:** ![pdeffebach](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/pdeffebach/32/10320_2.png) [@pdeffebach](https://discourse.julialang.org/u/pdeffebach)\
**Post date:** [August 10, 2023, 12:56pm UTC](https://discourse.julialang.org/t/remove-column-having-missing-values-and-assign-default-names-again/102666/4 "2023-08-10T12:56:12Z")

</div>

A somewhat wordy solution:

```julia
julia> select(df, [n for n in names(df) if !all(ismissing, df[!, n])])
2×2 DataFrame
 Row │ a b     
     │ Int64 Int64 
─────┼──────────────
   1 │ 1 3
   2 │ 2 4

```

I can’t think of a less wordy way of doing it. Probably something DataFrames.jl could add eventually tbh.

There is a way to do this with `names`

```julia
julia> select(df, names(df, (all.(ismissing, eachcol(df))) .== false))

```

---

<div class="post-metadata">

**Author:** ![rocco\_sprmnt21](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/rocco_sprmnt21/32/20127_2.png) [@rocco\_sprmnt21](https://discourse.julialang.org/u/rocco_sprmnt21)\
**Post date:** [August 10, 2023, 8:37pm UTC](https://discourse.julialang.org/t/remove-column-having-missing-values-and-assign-default-names-again/102666/5 "2023-08-10T20:37:51Z")

</div>

```julia
df[:,Not(names(df,Missing))]

```

```julia
DF=df[:,Not(names(df,Missing))]

L=length(names(df,Missing))
N=ncol(df)-L
rename(DF,names(df)[1:N])

```

---

<div class="post-metadata">

**Author:** ![rocco\_sprmnt21](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/rocco_sprmnt21/32/20127_2.png) [@rocco\_sprmnt21](https://discourse.julialang.org/u/rocco_sprmnt21)\
**Post date:** [August 11, 2023, 9:40am UTC](https://discourse.julialang.org/t/remove-column-having-missing-values-and-assign-default-names-again/102666/6 "2023-08-11T09:40:01Z")

</div>

Is there a reason (or more) for not defining the length of the inverted indexes?

```julia
 m=names(df,Missing)
# rename(df[:,Not(m)],names(df)[1:ncol(df)-length(m)])
rename(df[:,Not(m)],names(df)[1:length(Not(m))])
ERROR: MethodError: no method matching length(::InvertedIndex{Vector{String}})

```

---

<div class="post-metadata">

**Author:** ![raman\_kumar](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/raman_kumar/32/26782_2.png) [@raman\_kumar](https://discourse.julialang.org/u/raman_kumar)\
**Post date:** [August 11, 2023, 9:43am UTC](https://discourse.julialang.org/t/remove-column-having-missing-values-and-assign-default-names-again/102666/7 "2023-08-11T09:43:18Z")

</div>

@rocco_sprmnt21 Thanks for your answer, but i was able to remove `missing` column by using regex and proper delimiter .

---

<div class="post-metadata">

**Author:** ![rocco\_sprmnt21](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/rocco_sprmnt21/32/20127_2.png) [@rocco\_sprmnt21](https://discourse.julialang.org/u/rocco_sprmnt21)\
**Post date:** [August 11, 2023, 10:01am UTC](https://discourse.julialang.org/t/remove-column-having-missing-values-and-assign-default-names-again/102666/8 "2023-08-11T10:01:31Z")

</div>

Bravo. Prevenire è meglio che curare!
