# Converting Dict to DataFrames

**URL:** <https://discourse.julialang.org/t/converting-dict-to-dataframes/131248>\
**Category:** New to Julia\
**Tags:** question, dictionary, dataframes\
**Created:** [July 31, 2025, 12:57pm UTC](https://discourse.julialang.org/t/converting-dict-to-dataframes/131248 "2025-07-31T12:57:40Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Snowy](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/snowy/32/36765_2.png) [@Snowy](https://discourse.julialang.org/u/Snowy)\
**Post date:** [July 31, 2025, 12:57pm UTC](https://discourse.julialang.org/t/converting-dict-to-dataframes/131248/1 "2025-07-31T12:57:40Z")

</div>

Hi all,  
I’m sure this is pretty simple but it’s tripping me up.  
Say I have a dictionary as such:

```julia-auto
using DataFrames
using Dates

Dates_to_remember = Dict(:Birthday=> Set([
    Date("2021-01-15"),
    Date("1991-08-30"),
    Date("1954-07-01")
]),
:Anniversary => Set([
    Date("1997-01-25"),
    Date("2017-09-30")
]))

```

How can I transform this so that the output looks like this?:

```julia-auto
transformed_output = DataFrame(:Date=>["2021-01-15","1991-08-30","1954-07-01","1997-01-25","2017-09-30"],:Category=>["Birthday","Bithday","Birthday","Anniversary","Anniversary"])

```

I’ve tried using values() but that gets me the set. I can’t really figure out how to get the values within the set to put into the DF.

Thanks for your help!  
Snowy

---

<div class="post-metadata">

**Author:** ![jules](https://avatars.discourse-cdn.com/v4/letter/j/41988e/32.png) [@jules](https://discourse.julialang.org/u/jules)\
**Post date:** [July 31, 2025, 1:20pm UTC](https://discourse.julialang.org/t/converting-dict-to-dataframes/131248/2 "2025-07-31T13:20:51Z")

</div>

This is one option:

```julia
julia> flatten(stack(DataFrame(Dates_to_remember), :), :value)
5×2 DataFrame
 Row │ variable value      
     │ String Date       
─────┼─────────────────────────
   1 │ Anniversary 2017-09-30
   2 │ Anniversary 1997-01-25
   3 │ Birthday 1991-08-30
   4 │ Birthday 2021-01-15
   5 │ Birthday 1954-07-01

```

---

<div class="post-metadata">

**Author:** ![sgaure](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/sgaure/32/14779_2.png) [@sgaure](https://discourse.julialang.org/u/sgaure)\
**Post date:** [July 31, 2025, 1:21pm UTC](https://discourse.julialang.org/t/converting-dict-to-dataframes/131248/3 "2025-07-31T13:21:54Z")

</div>

Or more straightforward:

```julia-auto
transformed_output = DataFrame()
for (k,v) in Dates_to_remember
    for d in v
        push!(transformed_output, (Date=d, Category=k))
    end
end

```

Use `string(d)` and `string(k)` if you want strings.

---

<div class="post-metadata">

**Author:** ![Snowy](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/snowy/32/36765_2.png) [@Snowy](https://discourse.julialang.org/u/Snowy)\
**Post date:** [July 31, 2025, 3:26pm UTC](https://discourse.julialang.org/t/converting-dict-to-dataframes/131248/4 "2025-07-31T15:26:39Z")

</div>

These are great functions I didn’t know existed.  
Thank you to you both!

---

<div class="post-metadata">

**Author:** ![rafael.guerra](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/rafael.guerra/32/216610_2.png) [@rafael.guerra](https://discourse.julialang.org/u/rafael.guerra)\
**Post date:** [July 31, 2025, 4:42pm UTC](https://discourse.julialang.org/t/converting-dict-to-dataframes/131248/5 "2025-07-31T16:42:23Z")

</div>

I think the whole thing can be written as simply as:

```julia-auto
DataFrame((Date=d, Category=k) for (k,v) in Dates_to_remember for d in v)

```
