You can use AsTable:
julia> transform(df, :y => AsTable)
2×4 DataFrame
Row │ x y a b
│ Float64 NamedTup… Int64 Int64
─────┼────────────────────────────────────────
1 │ 0.459213 (a = 1, b = 2) 1 2
2 │ 0.241038 (a = 3, b = 5) 3 5