With PrettyTables, it may be written like this:
using DataFrames, PrettyTables
df = DataFrame(rand(5,4), [:foo, :bar, :baz, :qux])
dic = Dict([:foo, :bar, :baz, :qux] .=> ["%0.1f", "%0.2f", "%0.2f dB", "%0.1f%%"])
d = Dict(Symbol.(names(df)) .=> 1:ncol(df))
pretty_table(df, formatters = ft_printf(collect(values(dic)), getindex.(Ref(d), keys(dic))))