# Dataframe destructors

**URL:** <https://discourse.julialang.org/t/dataframe-destructors/76822>\
**Category:** Data\
**Tags:** question, dataframes, namedtuple\
**Created:** [February 20, 2022, 9:05pm UTC](https://discourse.julialang.org/t/dataframe-destructors/76822 "2022-02-20T21:05:00Z")\
**Posts on this page:** 3\
**Page:** 1

<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:** [February 20, 2022, 9:05pm UTC](https://discourse.julialang.org/t/dataframe-destructors/76822/1 "2022-02-20T21:05:00Z")

</div>

What is the best (simple/efficient) way to transform a dataframe into a namedtuple of vectors?  
and  
What is the best (simple/efficient) way to transform a dataframe into a vector of namedtuples?

---

<div class="post-metadata">

**Author:** ![juliohm](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/juliohm/32/215266_2.png) [@juliohm](https://discourse.julialang.org/u/juliohm)\
**Post date:** [February 20, 2022, 9:32pm UTC](https://discourse.julialang.org/t/dataframe-destructors/76822/2 "2022-02-20T21:32:44Z")

</div>

```julia
julia> using DataFrames
julia> using Tables

julia> df = DataFrame(a=rand(3), b=rand(3))
3×2 DataFrame
 Row │ a b        
     │ Float64 Float64  
─────┼─────────────────────
   1 │ 0.266649 0.430507
   2 │ 0.0831088 0.612815
   3 │ 0.181096 0.658077

julia> Tables.columntable(df)
(a = [0.2666485657643721, 0.08310884238994776, 0.18109579692899447], b = [0.4305065586341045, 0.6128151086401142, 0.6580774728835025])

julia> Tables.rowtable(df)
3-element Vector{NamedTuple{(:a, :b), Tuple{Float64, Float64}}}:
 (a = 0.2666485657643721, b = 0.4305065586341045)
 (a = 0.08310884238994776, b = 0.6128151086401142)
 (a = 0.18109579692899447, b = 0.6580774728835025)

```

Not necessarily the most efficient, but super clean.

---

<div class="post-metadata">

**Author:** ![stillyslalom](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stillyslalom/32/45687_2.png) [@stillyslalom](https://discourse.julialang.org/u/stillyslalom)\
**Post date:** [February 20, 2022, 9:34pm UTC](https://discourse.julialang.org/t/dataframe-destructors/76822/3 "2022-02-20T21:34:02Z")

</div>

Without Tables.jl,

```julia
NamedTuple(pairs(eachcol(df))) # NT of vectors
NamedTuple.(eachrow(df)) # vector of NTs

```
