# How to rename several columns of Julia DataFrame?

**URL:** <https://discourse.julialang.org/t/how-to-rename-several-columns-of-julia-dataframe/92232>\
**Category:** New to Julia\
**Created:** [December 28, 2022, 3:52pm UTC](https://discourse.julialang.org/t/how-to-rename-several-columns-of-julia-dataframe/92232 "2022-12-28T15:52:25Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Luigi\_Marongiu](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/luigi_marongiu/32/7909_2.png) [@Luigi\_Marongiu](https://discourse.julialang.org/u/Luigi_Marongiu)\
**Post date:** [December 28, 2022, 3:52pm UTC](https://discourse.julialang.org/t/how-to-rename-several-columns-of-julia-dataframe/92232/1 "2022-12-28T15:52:25Z")

</div>

Hello,  
I have a dataframe and I would like to change all the names at once. I can change the name of a single column following [this script](https://discourse.julialang.org/t/change-column-names-of-a-dataframe-previous-methods-dont-work/48026), but what is the syntax for the whole lot?  
I have tried giving an array of names as input and one as output, but did not work:

```julia
julia> df=DataFrame(c1=[1,2,3],c2=[3,4,5])
3×2 DataFrame
 Row │ c1 c2    
     │ Int64 Int64 
─────┼──────────────
   1 │ 1 3
   2 │ 2 4
   3 │ 3 5

julia> rename!(df,[:c1, :c2] => [:a,:b])

ERROR: MethodError: no method matching rename!(::DataFrame, ::Vector{Pair{Vector{Symbol}, Vector{Symbol}}})
Closest candidates are:
  rename!(::AbstractDataFrame, ::AbstractVector{Symbol}; makeunique) at ~/.julia/packages/DataFrames/JZ7x5/src/abstractdataframe/abstractdataframe.jl:197
  rename!(::AbstractDataFrame, ::AbstractVector{<:AbstractString}; makeunique) at ~/.julia/packages/DataFrames/JZ7x5/src/abstractdataframe/abstractdataframe.jl:203
  rename!(::AbstractDataFrame, ::AbstractVector{Pair{Symbol, Symbol}}) at ~/.julia/packages/DataFrames/JZ7x5/src/abstractdataframe/abstractdataframe.jl:209
  ...
Stacktrace:
 [1] rename!(df::DataFrame, args::Pair{Vector{Symbol}, Vector{Symbol}})
   @ DataFrames ~/.julia/packages/DataFrames/JZ7x5/src/abstractdataframe/abstractdataframe.jl:235
 [2] top-level scope
   @ none:1

```

---

<div class="post-metadata">

**Author:** ![Nathan\_Boyer](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nathan_boyer/32/14825_2.png) [@Nathan\_Boyer](https://discourse.julialang.org/u/Nathan_Boyer)\
**Post date:** [December 28, 2022, 4:02pm UTC](https://discourse.julialang.org/t/how-to-rename-several-columns-of-julia-dataframe/92232/2 "2022-12-28T16:02:11Z")

</div>

Very close! You just need to [broadcast](https://docs.julialang.org/en/v1/manual/arrays/#Broadcasting) the pairs with `.=>`.

```julia
julia> rename!(df, [:c1, :c2] .=> [:a,:b])
3×2 DataFrame
 Row │ a b
     │ Int64 Int64
─────┼──────────────
   1 │ 1 3
   2 │ 2 4
   3 │ 3 5

```

You could alternatively list each transformation sequentially:

```julia
julia> rename!(df, :c1 => :a, :c2 => :b)
3×2 DataFrame
 Row │ a b
     │ Int64 Int64
─────┼──────────────
   1 │ 1 3
   2 │ 2 4
   3 │ 3 5

```

---

<div class="post-metadata">

**Author:** ![nilshg](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nilshg/32/2283_2.png) [@nilshg](https://discourse.julialang.org/u/nilshg)\
**Post date:** [December 28, 2022, 6:12pm UTC](https://discourse.julialang.org/t/how-to-rename-several-columns-of-julia-dataframe/92232/3 "2022-12-28T18:12:46Z")

</div>

If you want to change all the names you don’t actually have to map old to new or reference the old column names at all,

```julia
rename!(df, [:a, :b])

```

is enough
