ohhh I see. Sorry about overlooking that. I would probably do
df = mapreduce(t -> select!(t, Not(1)), (x, y) -> hcat(x, y; copycols = false), dfs)
insertcols!(df, 1, :id => first(dfs)[:, 1])
This should be faster, since you aren’t copying the columns in hcat. You get rid of the first column each time you hcat, then add it at the end.